perm filename MONCOM.BH[S,DOC]3 blob sn#128258 filedate 1974-10-31 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00186 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00025 00002	
C00026 00003
C00028 00004
C00031 00005	                                                       CONTENTS     i
C00035 00006	                                                       CONTENTS    ii
C00039 00007	                                                       CONTENTS   iii
C00040 00008	1.                                                 Introduction     1
C00044 00009	1.1                                 Introduction to Timesharing     2
C00049 00010	1.1                                 Introduction to Timesharing     3
C00054 00011	1.2                                   Timesharing at the AI Lab     4
C00059 00012	1.3                                   Introduction to Terminals     5
C00064 00013	1.3                                   Introduction to Terminals     6
C00068 00014	1.4                              Typing Commands to the Monitor     7
C00073 00015	1.4                              Typing Commands to the Monitor     8
C00077 00016	1.5                                                File Storage     9
C00081 00017	1.5                                                File Storage    10
C00085 00018	1.6                                     LOGIN and KJOB Commands    11
C00089 00019	1.7                                            Editing Commands    12
C00093 00020	1.8                 Commands for Compiling and Running Programs    13
C00097 00021	1.9                                        Information Commands    14
C00101 00022	1.10                                   Programs and Core Images    15
C00103 00023	2.                                            Display Terminals    16
C00107 00024	2.1                                                   Keyboards    17
C00112 00025	2.2                                             The Line Editor    18
C00117 00026	2.2                                             The Line Editor    19
C00122 00027	2.3                                      Line Editor Activation    20
C00128 00028	2.3                                      Line Editor Activation    21
C00132 00029	2.4                                   ESCAPE and BREAK Commands    22
C00136 00030	2.5                                                The WHO Line    23
C00139 00031	2.5                                                The WHO Line    24
C00144 00032	2.5                                                The WHO Line    25
C00149 00033	2.6                                        Page Printer Control    26
C00154 00034	2.7                                           Data Disc Control    27
C00158 00035	2.8                                                 III Control    28
C00162 00036	2.9                                        Audio Switch Control    29
C00163 00037	3.                                                    Teletypes    30
C00167 00038	3.                                                    Teletypes    31
C00169 00039	4.                                       Basic Monitor Commands    32
C00173 00040	4.1                                            Running Programs    33
C00177 00041	4.2                                    Manipulating Core Images    34
C00182 00042	4.3                                           Starting Programs    35
C00187 00043	4.4                                               Detached Jobs    36
C00192 00044	4.5                                              Device Control    37
C00196 00045	4.5                                              Device Control    38
C00201 00046	4.5                                              Device Control    39
C00205 00047	4.6                                          System Information    40
C00210 00048	4.6                                          System Information    41
C00213 00049	4.7                                      Miscellaneous Commands    42
C00218 00050	5.                                      System Program Commands    43
C00222 00051	5.1                                                       LOGIN    44
C00227 00052	5.1                                                       LOGIN    45
C00231 00053	5.1                                                       LOGIN    46
C00236 00054	5.1                                                       LOGIN    47
C00240 00055	5.2                                                      LOGOUT    48
C00244 00056	5.3                                                         RPG    49
C00247 00057	5.4                                              COPY and SPOOL    50
C00250 00058	5.5                                                        MAIL    51
C00253 00059	5.6                                                        DART    52
C00257 00060	5.7                                                          DO    53
C00261 00061	5.9                                                         WHO    54
C00266 00062	5.9                                                         WHO    55
C00270 00063	5.10                                                       FIND    56
C00274 00064	5.10                                                       FIND    57
C00278 00065	5.11                          Other System Information Programs    58
C00282 00066	5.12                              Miscellaneous System Programs    59
C00286 00067	6.                                          Privileged Commands    60
C00290 00068	6.                                          Privileged Commands    61
C00291 00069	Appendix 1                                                  RPG    62
C00295 00070	Appendix 1                                                  RPG    63
C00299 00071	Appendix 1                                                  RPG    64
C00303 00072	Appendix 1                                                  RPG    65
C00307 00073	Appendix 1                                                  RPG    66
C00309 00074	Appendix 1                                                  RPG    67
C00313 00075	Appendix 1                                                  RPG    68
C00317 00076	Appendix 1                                                  RPG    69
C00320 00077	Appendix 1                                                  RPG    70
C00324 00078	Appendix 1                                                  RPG    71
C00328 00079	Appendix 1                                                  RPG    72
C00332 00080	Appendix 1                                                  RPG    73
C00337 00081	Appendix 1                                                  RPG    74
C00341 00082	Appendix 1                                                  RPG    75
C00342 00083	Appendix 1                                                  RPG    76
C00346 00084	Appendix 1                                                  RPG    77
C00349 00085	Appendix 1                                                  RPG    78
C00350 00086	Appendix 2                                                 COPY    79
C00354 00087	Appendix 2                                                 COPY    80
C00358 00088	Appendix 2                                                 COPY    81
C00363 00089	Appendix 2                                                 COPY    82
C00365 00090	Appendix 2                                                 COPY    83
C00369 00091	Appendix 2                                                 COPY    84
C00373 00092	Appendix 2                                                 COPY    85
C00378 00093	Appendix 2                                                 COPY    86
C00383 00094	Appendix 2                                                 COPY    87
C00388 00095	Appendix 2                                                 COPY    88
C00393 00096	Appendix 2                                                 COPY    89
C00397 00097	Appendix 2                                                 COPY    90
C00399 00098	Appendix 2                                                 COPY    91
C00403 00099	Appendix 2                                                 COPY    92
C00406 00100	Appendix 3                                                SPOOL    93
C00410 00101	Appendix 3                                                SPOOL    94
C00411 00102	Appendix 3                                                SPOOL    95
C00416 00103	Appendix 3                                                SPOOL    96
C00419 00104	Appendix 3                                                SPOOL    97
C00420 00105	Appendix 3                                                SPOOL    98
C00425 00106	Appendix 3                                                SPOOL    99
C00427 00107	Appendix 3                                                SPOOL   100
C00431 00108	Appendix 4                                                 MAIL   101
C00434 00109	Appendix 4                                                 MAIL   102
C00439 00110	Appendix 4                                                 MAIL   103
C00444 00111	Appendix 4                                                 MAIL   104
C00449 00112	Appendix 4                                                 MAIL   105
C00454 00113	Appendix 4                                                 MAIL   106
C00459 00114	Appendix 4                                                 MAIL   107
C00464 00115	Appendix 4                                                 MAIL   108
C00469 00116	Appendix 4                                                 MAIL   109
C00474 00117	Appendix 4                                                 MAIL   110
C00478 00118	Appendix 4                                                 MAIL   111
C00482 00119	Appendix 4                                                 MAIL   112
C00485 00120	Appendix 4                                                 MAIL   113
C00489 00121	Appendix 4                                                 MAIL   114
C00493 00122	Appendix 4                                                 MAIL   115
C00497 00123	Appendix 4                                                 MAIL   116
C00502 00124	Appendix 4                                                 MAIL   117
C00507 00125	Appendix 4                                                 MAIL   118
C00510 00126	Appendix 5                                                 DART   119
C00513 00127	Appendix 5                                                 DART   120
C00516 00128	Appendix 5                                                 DART   121
C00517 00129	Appendix 6                                 Service Level System   122
C00521 00130	Appendix 6                                 Service Level System   123
C00525 00131	Appendix 6                                 Service Level System   124
C00529 00132	Appendix 6                                 Service Level System   125
C00533 00133	Appendix 6                                 Service Level System   126
C00537 00134	Appendix 6                                 Service Level System   127
C00538 00135	Appendix 7                                             FIXIMLAC   128
C00540 00136	Appendix 8                                         ARPA Network   129
C00545 00137	Appendix 8                                         ARPA Network   130
C00551 00138	Appendix 8                                         ARPA Network   131
C00556 00139	Appendix 8                                         ARPA Network   132
C00560 00140	Appendix 8                                         ARPA Network   133
C00565 00141	Appendix 8                                         ARPA Network   134
C00569 00142	Appendix 8                                         ARPA Network   135
C00573 00143	Appendix 8                                         ARPA Network   136
C00577 00144	Appendix 8                                         ARPA Network   137
C00580 00145	Appendix 8                                         ARPA Network   138
C00581 00146	Appendix 8                                         ARPA Network   139
C00586 00147	Appendix 8                                         ARPA Network   140
C00589 00148	Appendix 8                                         ARPA Network   141
C00592 00149	Appendix 9                          Care and Feeding of Devices   142
C00596 00150	Appendix 9                          Care and Feeding of Devices   143
C00600 00151	Appendix 9                          Care and Feeding of Devices   144
C00605 00152	Appendix 9                          Care and Feeding of Devices   145
C00607 00153	Appendix 9                          Care and Feeding of Devices   146
C00611 00154	Appendix 9                          Care and Feeding of Devices   147
C00616 00155	Appendix 9                          Care and Feeding of Devices   148
C00620 00156	Appendix 10                                Reloading the System   149
C00624 00157	Appendix 11                              Monitor Error Messages   150
C00628 00158	Appendix 11                              Monitor Error Messages   151
C00631 00159	Appendix 11                              Monitor Error Messages   152
C00634 00160	Appendix 11                              Monitor Error Messages   153
C00637 00161	Appendix 11                              Monitor Error Messages   154
C00641 00162	Appendix 11                              Monitor Error Messages   155
C00644 00163	Appendix 11                              Monitor Error Messages   156
C00647 00164	Appendix 11                              Monitor Error Messages   157
C00650 00165	Appendix 11                              Monitor Error Messages   158
C00653 00166	Appendix 11                              Monitor Error Messages   159
C00657 00167	Appendix 11                              Monitor Error Messages   160
C00660 00168	Appendix 11                              Monitor Error Messages   161
C00663 00169	Appendix 11                              Monitor Error Messages   162
C00666 00170	Appendix 11                              Monitor Error Messages   163
C00669 00171	Appendix 11                              Monitor Error Messages   164
C00672 00172	Appendix 11                              Monitor Error Messages   165
C00675 00173	Appendix 11                              Monitor Error Messages   166
C00676 00174	Appendix 12                                        Bibliography   167
C00680 00175	Appendix 12                                        Bibliography   168
C00681 00176	Appendix 13                              Stanford Character Set   169
C00685 00177	Appendix 13                              Stanford Character Set   170
C00689 00178	                                                          INDEX   171
C00694 00179	                                                          INDEX   172
C00699 00180	                                                          INDEX   173
C00704 00181	                                                          INDEX   174
C00709 00182	                                                          INDEX   175
C00714 00183	                                                          INDEX   176
C00719 00184	                                                          INDEX   177
C00724 00185	                                                          INDEX   178
C00728 00186	
C00729 ENDMK
C⊗;



STANFORD ARTIFICIAL INTELLIGENCE LABORATORY           September, 1974
OPERATING NOTE 54.4









             M O N I T O R   C O M M A N D   M A N U A L
                          (Second Edition)



                                 by


                            Brian Harvey








ABSTRACT

This document  describes the monitor  commands available to  users of
the Stanford  Artificial Intelligence Laboratory  timesharing system,
and the  use of the  terminals connected to  this system.   The first
section  is an  introduction to  the system  for new  users.  Several
appendices  are included  containing documentation  of  commonly used
system programs.  This manual supersedes SAILON 54.3 and  the several
addenda thereto.






This work was supported  by the Advanced Research Projects  Agency of
the   Office   of   the   Secretary   of   Defense   under   contract
DAHC15-73-C-0435.



   














ACKNOWLEDGMENTS

Several  sections  of  this  document  were  excerpted  from  program
documentation written  by others.   Contributors include  Ralph Gorin
(RPG,  SPOOL, DART),  Dick Helliwell  (COPY, DO,  ZERO),  Andy Moorer
(TELNET), Dan Swinehart (FTP), Larry Tesler (FIND), Jim  Stein (RSL),
and  Bo  Eross (FIXIML).   John  McCarthy wrote  the  Introduction to
Timesharing  section.    Martin  Frost   and  Fred   Wright  provided
invaluable technical assistance  in publishing the manual,  and Ralph
Gorin, Brian McCune, and  Fred Wright edited and corrected  the draft
versions.  This document was  produced on the Xerox  Graphics Printer
using the PUB  program written by Larry  Tesler and improved  by Rich
Johnsson, Pitts Jarvis, and Tovar.

Still further thanks are due to Larry Tesler, whose many days  of PUB
debugging when he would rather have been doing other things  made the
second edition much less painful to prepare than the first.   Also to
all the people  responsible for ITS  TECO, without which  there might
not have been  a Monitor Command Summary  in this edition.   Last but
not least, to Tom Knight  for persuading our XGP to produce  the most
beautiful output in its history.

[Note: Monitor Command Summary in XGP version only.]
                                                       CONTENTS     i


                  T A B L E   O F   C O N T E N T S



SECTION                                                          PAGE


   1   INTRODUCTION FOR NEW USERS                                   1

            1.1   Introduction to Timesharing   .  .  .  .  .  .    1
            1.2   Timesharing at the AI Lab  .  .  .  .  .  .  .    3
            1.3   Introduction to Terminals  .  .  .  .  .  .  .    5
            1.4   Typing Commands to the Monitor   .  .  .  .  .    7
            1.5   File Storage   .  .  .  .  .  .  .  .  .  .  .    8
            1.6   LOGIN and KJOB Commands    .  .  .  .  .  .  .   10
            1.7   Editing Commands  .  .  .  .  .  .  .  .  .  .   11
            1.8   Commands for Compiling and Running Programs  .   13
            1.9   Information Commands    .  .  .  .  .  .  .  .   14
            1.10  Programs and Core Images   .  .  .  .  .  .  .   14


   2   DISPLAY TERMINALS                                           16

            2.1   Keyboards   .  .  .  .  .  .  .  .  .  .  .  .   16
            2.2   The Line Editor   .  .  .  .  .  .  .  .  .  .   17
            2.3   Line Editor Activation  .  .  .  .  .  .  .  .   19
            2.4   ESCAPE and BREAK Commands  .  .  .  .  .  .  .   21
            2.5   The WHO Line   .  .  .  .  .  .  .  .  .  .  .   22
            2.6   Page Printer Control    .  .  .  .  .  .  .  .   25
            2.7   Data Disc Control    .  .  .  .  .  .  .  .  .   26
            2.8   III Control    .  .  .  .  .  .  .  .  .  .  .   27
            2.9   Audio Switch Control    .  .  .  .  .  .  .  .   28


   3   TELETYPES                                                   30


   4   BASIC MONITOR COMMANDS                                      32

            4.1   Running Programs  .  .  .  .  .  .  .  .  .  .   32
            4.2   Manipulating Core Images   .  .  .  .  .  .  .   33
            4.3   Starting Programs    .  .  .  .  .  .  .  .  .   34
            4.4   Detached Jobs  .  .  .  .  .  .  .  .  .  .  .   35
            4.5   Device Control    .  .  .  .  .  .  .  .  .  .   36
            4.6   System Information   .  .  .  .  .  .  .  .  .   39
            4.7   Miscellaneous Commands  .  .  .  .  .  .  .  .   41
                                                       CONTENTS    ii


   5   SYSTEM PROGRAM COMMANDS                                     43

            5.1   LOGIN    .  .  .  .  .  .  .  .  .  .  .  .  .   43
            5.2   LOGOUT   .  .  .  .  .  .  .  .  .  .  .  .  .   47
            5.3   RPG   .  .  .  .  .  .  .  .  .  .  .  .  .  .   48
            5.4   COPY and SPOOL    .  .  .  .  .  .  .  .  .  .   49
            5.5   MAIL  .  .  .  .  .  .  .  .  .  .  .  .  .  .   51
            5.6   DART  .  .  .  .  .  .  .  .  .  .  .  .  .  .   51
            5.7   DO    .  .  .  .  .  .  .  .  .  .  .  .  .  .   52
            5.8   ZERO  .  .  .  .  .  .  .  .  .  .  .  .  .  .   53
            5.9   WHO   .  .  .  .  .  .  .  .  .  .  .  .  .  .   53
            5.10  FIND  .  .  .  .  .  .  .  .  .  .  .  .  .  .   55
            5.11  Other System Information Programs   .  .  .  .   57
            5.12  Miscellaneous System Programs    .  .  .  .  .   58


   6   PRIVILEGED COMMANDS                                         60




                         A P P E N D I C E S


   1   RPG                                                         62

   2   COPY                                                        79

   3   SPOOL                                                       93

   4   MAIL                                                       101

   5   DART                                                       119

   6   SERVICE LEVEL SYSTEM (RSL)                                 122

   7   FIXIMLAC                                                   128

   8   ARPA NETWORK                                               129

   9   CARE AND FEEDING OF DEVICES                                142

   10  RELOADING THE SYSTEM                                       149

   11  MONITOR ERROR MESSAGES                                     150

   12  BIBLIOGRAPHY                                               167
                                                       CONTENTS   iii


   13  STANFORD CHARACTER SET                                     169
1.                                                 Introduction     1


                              SECTION 1

                     INTRODUCTION FOR NEW USERS




This  manual  describes  the  monitor  commands  used  in  the PDP-10
computer system at  the Stanford Artificial  Intelligence Laboratory.
The first section is  an introduction for new users,  including brief
explanations of  terminals, file storage,  and some of  the essential
monitor  commands.   The  computer  is  operated  exclusively   as  a
timesharing system,  and the section  begins with an  introduction to
timesharing.



                  1.1  Introduction to Timesharing


A timesharing  computer system includes  the computer itself  (in our
case a  PDP-10 computer made  by the Digital  Equipment Corporation),
user terminals for input to and output from the computer (in our case
about  60 keyboard  and display  terminals), and  a file  system that
keeps programs, data  for the programs,  reports, and other  data for
the users.

The basic  idea of  timesharing is to  allow each  user to  behave as
though he  had a  computer to himself  controlled from  his terminal.
This is accomplished by having the computer cycle its attention among
the users wanting service in  rotation.  It does this fast  enough so
that small requests are serviced  in a time that ranges from  a small
fraction of  a second to  a few seconds,  depending on the  number of
people demanding service at that instant.  If the desired computation
is long, the computer will do a bit of it, then service other people,
then return to it, and so on until the computation is done.  The time
taken will  depend on the  size of the  computation and how  busy the
machine is.

At any  time the  user's terminal is  interacting with  some program.
These  programs  include  the timesharing  monitor;  editors  used to
prepare programs, documents, reports and other data;  various utility
programs; and the user's own programs.

When you first sit down  at a terminal, you will be  interacting with
the monitor, and you can  always get back to the monitor  by pressing
the CALL key on the terminal.   The first thing you have to do  is to
log in, which tells the monitor who you are so it can connect  you to
the  file  directory  that  contains  your  files  and  can   do  its
1.1                                 Introduction to Timesharing     2


accounting.  The last  thing you do is  log out so that  the terminal
and other resources  you have been occupying  can be used  by someone
else.

You will have a certain quota of disk space and will be able  to keep
files such as programs between uses of the computer.   Therefore, you
will not ordinarily need any external form of storage such as punched
cards or magnetic tape.  (Our computer doesn't even have punched card
equipment.)

A user gets service from programs by typing commands to  the monitor.
Some monitor commands perform the service and leave you again talking
to the monitor.   Others cause a  program to be  started; thereafter,
you have to interact with  that program in the way prescribed  by it.
When you are done with it, you go back to the monitor.

Your program also gets service  from the monitor by means  of special
instructions, called UUOs, used in the program.  The monitor provides
many different services as a sort of subroutine of your program; most
importantly, it  is responsible for  allocating resources,  like core
storage and input/output  devices, among different  jobs.  Therefore,
input and output must be done through the monitor to avoid conflicts.
These UUOs are documented in their own manual; this one is  about the
commands you type at your terminal.

A typical task is to  write a program in some computer  language such
as SAIL (our dialect of ALGOL) or LISP and then debug the  program by
running it, checking the results, and changing it until it  gives the
right answers.  This is accomplished in the following steps:

1.   First you  run an  editor.  (We  have several,  but  the current
favorite  is  called  E.)  The editor  reads  whatever  you  type and
displays it; what  you type becomes the  text of the program  you are
writing.   However, the  editor gives  you convenient  facilities for
going back in your text and  making changes that you think of  as you
go along.  Most people don't write their programs on paper,  but make
them up as they  use the editor.  When  the program is ready  to try,
you exit from the editor back  to the monitor, and your program  is a
file on the disk with a name you have given it.  At any time, you can
re-edit this file to  make changes in it.   You can also print  it on
the line printer to take a copy home, and when you don't need  it any
more you can delete it.

2.  Normally, the  next step is to  call a compiler to  translate the
program from a source language into machine language, call the loader
to load it into your core image, and finally ask the computer  to run
it.  You can do  these things as separate operations,  but facilities
are provided for initiating all of this with a single command.
1.1                                 Introduction to Timesharing     3


3. When the computer runs  your program, it may just  produce answers
and stop.  If you like the answers, perhaps you are done.  Otherwise,
you go back to the editor to make changes in the source file  and try
again.   On  the other  hand,  you may  have  written  an interactive
program  which  expects  you  to  type  input  on  the  terminal.  It
interprets your  input and  gives output, then  asks for  more input,
etc.  Your  program may read  files and write  them.  It  may display
pictures on your terminal.   Also, it may interact with  the physical
world by reading pictures from one of the TV cameras attached  to the
computer and by waving the mechanical arm.

4. In order  to debug a  program, you may have  to do more  than just
look at the output.  Therefore, the timesharing system has facilities
for examining and changing the contents of registers and  for putting
break-points in programs.



                   1.2  Timesharing at the AI Lab


Our timesharing system runs on a Digital Equipment  Corporation (DEC)
PDP-10 computer.  This is  a 36-bit machine designed  for timesharing
applications, with  262,000 words of  core storage.   Our timesharing
system, derived from old DEC software, has been  extensively modified
for our special requirements.

Programming languages available here include SAIL, a version of ALGOL
with added  features for  backtracking, list  processing, associative
processing,  and coroutining;  several  versions of  LISP;  FAIL, our
PDP-10  assembly  language;  and  the  MICRO-PLANNER  problem solving
language.

To use the computer, you must type a LOGIN command at  your terminal.
(See  Section 1.6  for a  description of  this command.)  The monitor
assigns you a job number,  which it uses internally to keep  track of
you.  Associated with  your job are  various resources, of  which the
most important is  the core image,  i.e., the simulated  core storage
maintained  for you  by  the monitor  so  that your  program  can use
addresses  starting  from  zero although  it  may  really  be located
anywhere in core while running.  Your job only has one core image; if
you type  a monitor command  which causes a  program to be  run, that
program replaces your old core image.  There is no way for one job to
run two programs at once.

As  a  user of  the  Stanford AI  Lab  system, you  will  be  given a
programmer name to identify you to the computer.  The main reason for
this is  so that the  monitor knows which  files on the  disk storage
belong to you.  This name  will probably be your initials.   When you
1.2                                   Timesharing at the AI Lab     4


log in, you must type in  this name, along with a project  name which
may identify what  project you are working  on.  For example,  if you
are doing homework for  a Computer Science course, the  course number
might  be   your  project   name.   The   combination  is   called  a
project-programmer  name or  PPN and  is typed  PRJ,PRG  or sometimes
[PRJ,PRG]  when  used in  a  file specification.   Project  "1"  is a
popular name with no special meaning.

Ours is just about the  most heavily used computer we know  of.  It's
hard to get good service, especially weekday  afternoons.  Therefore,
please be careful  about leaving jobs logged  in when you  leave, and
don't play Spacewar during the day!  Even a job which is  not running
uses up scarce resources.

Sometimes the system stops working while you are using it.   You will
notice that characters  you type no  longer appear on  your terminal.
In many cases,  the system fixes itself  after a few seconds,  so all
that happens is that a few characters you typed are lost.  Otherwise,
someone has to go fix it manually.  Sometimes they can get it working
again so that you can just continue with what you were  doing.  Other
times, they have to  load a new copy of  the system, and you  have to
start over again.   This is called  reloading.  If this  happens, you
will see a message  to that effect on  your terminal.  (It is  a good
idea, when editing a long file, to save it on the disk every so often
in case  of a  system crash.)  If  the system  crashes and  nobody is
around to fix it, you  may have to reload it yourself.   See Appendix
10 to find out how.

Sometimes  the  system  is  stopped  intentionally  for  software  or
hardware  maintenance.  This  downtime is  scheduled in  advance, and
part of the system messages you see when you log in is  a maintenance
schedule.  Some time  before the system  is taken down  for scheduled
maintenance, you  will see  a warning on  your terminal  which counts
down to the end.   This warns you to  save any files you  are writing
and stop  what you  are doing.  Such  maintenance is  often scheduled
between 5 and 7 weekday evenings.

This  document,  the Monitor  Command  Manual, describes  the  use of
monitor commands typed in at terminals.  Another manual describes the
UUOs, instructions used by programs to communicate with  the monitor.
Other system information, including documentation of  specific system
programs, can be found in some printed manuals and on the  disk; look
at   the  [S,DOC]   and   [UP,DOC]  file   directories   for  program
documentation.  Some  system programs, which  are invoked  by special
monitor commands, are written up in appendices to this  manual.  Most
of these appendices are  derived from [UP,DOC] files.  Some  of those
files are updated more  frequently than this manual and  some aren't.
Caveat emptor.
1.3                                   Introduction to Terminals     5


                   1.3  Introduction to Terminals


Most terminals on this  system are display terminals;  the characters
you type appear on a display screen.  There are also a few Teletypes,
which  use paper,  and do  not  have the  full character  set  of our
displays.  Teletypes are rarely  used here, although there are  a few
connected to our system.

There are  two kinds  of display terminals  in use  at the  lab, Data
Discs and IIIs ("triple-I").   They use the same keyboards,  but have
different display screens.  The  Data Discs, which are  more numerous
(about 60 of  them), use TV monitors.   (The name Data  Disc actually
refers not  to the terminals  themselves, but to  the machine  in the
computer room which controls them.)  The six IIIs are vector plotting
displays, used  mainly for graphics  display programs  like Spacewar.
Unless you are writing a  display program, the difference is  not too
important except that the character  set on the IIIs is  less legible
than that on the Data Discs.

A vacant terminal should say TAKE ME I'M YOURS!  along with a line of
cryptic  information  on  an  otherwise  blank  screen.   The cryptic
information is  the system WHO  line, described on  page 23.  If it's
completely blank, make sure  it's turned on, and that  the brightness
and contrast (intensity on IIIs)  are turned up.  If it says  NO DATA
DISK CHANNELS LEFT, it means  that the Data Disc, which can  run only
31 terminals at once, is  full.  A free terminal is  called available
because the message used to say THIS CONSOLE AVAILABLE until Dick got
to it.

Each  of  the  printing  character  keys  on  our  terminals  has two
characters  printed on  it (except  the 0  key).  The  bottom  one is
usually a letter or digit, and the top one is some special character.
There are  two SHIFT keys  and a SHIFT  LOCK key, which  make letters
upper  case.   The  keys which  produce  the  special  characters are
labelled TOP.  For example, hitting the "<D" key alone produces lower
case "d"; also holding  down SHIFT produces capital "D";  and holding
down the  TOP key  makes it produce  "<" (SHIFT  and TOP  together is
interpreted as TOP).

When  you  type something  on  an available  terminal,  the available
message is replaced by  whatever you typed.  The characters  you type
are  kept in  a  special buffer  called  your line  editor  until you
activate them  by typing  RETURN or a  few other  special characters.
The line  editor allows  you to change  the contents  of the  line by
using special editing command characters.  The characters in the line
editor are displayed  on the screen  with two cursors:  underlines on
Data Discs and triangles on IIIs.  The left cursor is  underneath the
first character  in the line  editor; the right  cursor is  under the
1.3                                   Introduction to Terminals     6


place where the next character you type will go (generally the end of
the line).   When your  line editor is  empty, the  cursors coincide.
The line editor  commands are explained  in Section 2.2.   Note: when
you  type RETURN,  the monitor  generally supplies  a  LINE character
automatically.  RETURN  signifies a  return to  the left  margin, and
LINE an advance to the next line.

To get you started using display terminals before you read  about all
the line editor commands, all you need to remember is that the BS key
will delete  the last character,  and the CLEAR  key will  delete the
entire  line.  The  CONTROL and  META keys  are used  for  other line
editor functions.

When you  are done with  a terminal,  be sure to  log it  out.  Also,
don't leave anything in the line editor--type RETURN before you leave
if you're not  sure.  Your Data Disc  channel will be  made available
soon after  you log out,  but not  if there is  anything in  the line
editor.

A note  on terminology: In  the body of  this manual,  characters are
referred to  by the name  printed on the  keyboard, e.g.,  RETURN and
FORM.  In  other documentation, including  some of the  appendices to
this manual, different notations  are used.  Some of these  are shown
here:

function           key         other notation

break              BREAK       <BRK> [BRK]
escape             ESC         <ESC> [ESC] <ESCAPE>
call               CALL        <CALL> [CALL] ↑C
clear              CLEAR       [CLEAR] ↑U
tab                TAB         <TAB> [TAB] <HT>
form feed          FORM        <FORM> [FORM] <FF>
vertical tab       VT          <VT>
backspace          BS          <BS> [BS]
carriage return    RETURN      [RETURN] <CR> CR
line feed          LINE        <LF> LF <LINEFEED>
shift              SHIFT       <SHIFT>
top                TOP         <TOP>
alt mode           ALT         <ALT> <ALTMODE> $
meta               META        <META> β
control            CONTROL     <CONTROL> <CTRL> α

The combination of RETURN and LINE (remember that LINE is supplied by
the monitor) is sometimes referred to as CRLF.
1.4                              Typing Commands to the Monitor     7


                 1.4  Typing Commands to the Monitor


What you type may be  read by different programs at  different times,
so you should be aware  of what program you're talking to.   When you
first type  on a vacant  terminal, you are  talking to  the monitor's
command decoder.  You continue to talk to the monitor until you start
running a program; then you're generally talking to that program.  To
distinguish these, the state of the terminal is described  as monitor
mode or user mode.  When the monitor is ready to read a  command from
your terminal,  it types  a period.  System  programs which  you run,
like compilers and editors, generally type an asterisk when  they are
ready for a command.

It  is possible  to type  ahead when  the system  is not  waiting for
typein.  Characters you type which are not immediately read by either
the monitor or a program  are stored in your terminal's  input buffer
until they are needed.  Programs can cause this buffer to be cleared.
For example, some programs ask for confirmation of  certain commands,
e.g., when you  specify for output  a filename which  already exists.
Some such programs clear your input buffer first and others don't, so
you can get confused by typing ahead to a program whose  behavior you
don't expect.  Your input buffer is also cleared when you type CALL.

Monitor commands  consist of the  command name, possibly  followed by
arguments separated by spaces or punctuation, and then a RETURN.  The
command   may  be   typed  using   upper  and   lower   case  letters
interchangeably.  Monitor command  names may be typed  in completely,
or they may be abbreviated  to only as many letters as  are necessary
to  make  the name  unique;  for  example, the  LOAD  command  may be
abbreviated LOA, but not LO because there is also a LOGIN command.  A
few common commands  have single-letter abbreviations (L  is accepted
to mean  LOGIN).  Only the  first six letters  of a command  name are
relevant.

Some  monitor  commands  are  completely  processed  by  the monitor,
without  running a  program  in your  core image.   For  example, the
DAYTIME command types the  current date and time,  without disturbing
your core  image.  Most  commands, however, require  a program  to be
run.  The monitor usually requires  you to log in before you  may run
programs; there  are a few  exceptions, to permit  system information
programs like WHO, and of course the LOGIN program itself.   If, when
not logged  in, you try  to run  a program which  requires you  to be
logged in, the monitor  automatically runs LOGIN, which will  ask you
for  your project-programmer  name.   In this  situation,  when LOGIN
finishes running, it will re-enter the command which you typed in the
first  place, so  the command  will be  performed without  making you
retype  it.   Commands  which  require login  but  which  refer  to a
pre-existing core  image rather  than starting  a new  program (e.g.,
START) do not cause this automatic login, but give an error message.
1.4                              Typing Commands to the Monitor     8


When  you first  enter a  command which  runs a  program,  the system
assigns you a job number and types a line like

JOB 19    Stanford 6.17/Q  09-10-74

which tells you  what version of the  monitor is running and  when it
was created, as well as your job number.  (If it types

JOB CAPACITY EXCEEDED

too many jobs are already logged in.)  When a program like WHO is run
without logging in,  the job is killed  when the program  exits.  The
LOGIN program, however, leaves you logged in when it exits.

Some  of  the  monitor commands  are  briefly  described  starting in
Section  1.6.   The full  descriptions  of all  the  commands  are in
Sections 4 and 5, and in the appendices.



                          1.5  File Storage


A file is  a stored collection of  information, perhaps a  program or
data.  Most files  are stored on  a permanently available  disk unit.
Files on the disk must be identified by name and by owner so that you
can get  at the one  you want.   Files on other  devices may  also be
used; we have magnetic tape, DECtape (a small mag tape unit unique to
Digital Equipment Corp. machines), and paper tape, as well as  a line
printer  and  stuff like  that.   Whenever a  program  does  input or
output,  it has  to specify  the particular  file it  wants.   A file
identifier is typed in the form

DEV:FILNAM.EXT[PRJ,PRG]

(some parts of that can  be left out).  DEV specifies the  device you
want.  Generally, if you want  the disk (DSK), you may leave  it out.
Device names may include a number to specify a particular unit; thus,
TTY is your own terminal (all terminals used to be Teletypes, and the
name  stuck), but  TTY26 is  the one  next to  the  computer console.
Besides these  physical device names,  you can define  logical device
names to use in your program.  The monitor command ASSIGN is  used to
make your logical name refer to some particular physical  device.  If
you leave out the device name, leave out the colon too.

Some devices, like the disk, require the use of filenames,  and some,
like the line printer, don't.  If you specify a filename for a device
which doesn't use  one, the name  is ignored.  Devices  which require
file names are called directory devices because they  include special
1.5                                                File Storage     9


files called directories which tell where the other files are.  Files
are specified by a filename, another name called the  extension, and,
on  the disk,  a PPN  specifying the  file's owner.   Letters  in the
filename are  upper case,  although most  programs will  accept lower
case letters.  The filename is one to six letters or digits,  and can
say anything you want to identify the file.  The extension,  which is
optional, is one to three characters.  The only directory  devices in
this system are the disk and DECtapes.

The extension of a  file is generally one  of a standard set  used to
indicate what sort of  file it is, like  SAI for a SAIL  program, REL
for a relocatable  binary program as produced  by a compiler,  or DMP
for a dumped core image.  Many programs use these standard extensions
as defaults, so you often can type the file name alone.

Disk  files  require  a project-programmer  name,  which  selects the
directory to use for the file (see page 3).  If you do not type  in a
PPN, you generally get the one you gave to LOGIN.  The disk directory
for each  user is  called a  UFD (User  File Directory);  people also
speak of a  disk area, although there  is not really a  physical area
involved.

Files are  divided into smaller  units, called records.   The precise
meaning of a record depends  on the particular device you  are using,
but often a record is the smallest unit of data which the device will
transfer to or  from the computer at  a time.  For example,  files on
the  disk  are  divided  into  200-word  (octal)  records.   The disk
hardware reads  or writes  one such  record at  a time.   On magnetic
tape, you  can write  any size  records; however,  when you  read the
tape, each  record must be  read all at  once.  The  monitor provides
buffering so that your program can deal with the data a  character or
a word at a time.  The monitor gets a record and stores it for you.

The following devices are available on this system.
1.5                                                File Storage    10


  DSK      the public disk
  SYS      same as DSK, but implies PPN [1,3] (system files)
  UDP1     user disk pack, a disk unit for private disk packs
  MTA0,1   magnetic tape drives
  DTA1-4   DECtape drives
  LPT      line printer
  XGP      Xerox Graphics Printer
  IMP      Interface Message Processor for ARPA network connections
  PTR      paper tape reader
  PTP      paper tape punch; also connected to CALCOMP plotter
  AD       old analog-to-digital and digital-to-analog converter
  ADC      new analog to digital converter
  DAC      new digital to analog converter
  VOD      voder (speech synthesizer)
  TV       TV cameras
  TTYn     terminals and pseudo-teletypes (see below)
  TTY      the user's own terminal
  CTY      PDP-10 console Teletype

A pseudo-teletype (PTY) is a simulated device used to  allow programs
to "type" monitor commands.  The program uses special UUOs  to output
text to  the PTY, which  is then seen  by the monitor  as if  it were
typed at another terminal, with its own TTY number.   Similarly, text
typed out  to the PTY  can be read  by the controlling  program.  One
user of PTYs is the program which allows people at other computers to
use our system via the ARPA network (Appendix 8).

Disk files are copied  to magnetic tape periodically, using  the DART
program (see  Appendix 5).   Monitor commands which  run DART  can be
used to retrieve  files which have  been clobbered by  system failure
(uncommon) or user error.



                    1.6  LOGIN and KJOB Commands


In this  and the following  sections, a few  of the  monitor commands
used in creating and debugging a program are described briefly.  More
complete descriptions come later and in other manuals.

The first thing you  have to do is log  in.  The command for  this is
called  LOGIN, abbreviated  L.  Your  project-programmer name  is its
argument.   (See  page  3 for  an  explanation  of project-programmer
names.) If you are named V. I. Lenin,* you might type

------
*  Last  year's edition  said  "Richard  M. Nixon"  here,  and  I was
thinking about a  used-Ford pun, but I  decided to hope  this edition
will outlast this administration.  Lenin is timeless.
1.6                                     LOGIN and KJOB Commands    11


L 1/VIL

(The slash means that you don't want to see any system messages which
you've seen before.  You could have used a comma to see  all messages
or a dot to see none at all.)  The monitor processes this  command by
assigning and typing  out a job number,  and then starting  the LOGIN
program in your core image.

If this is the first time you're logging in, LOGIN will type out

ARE YOU SURE?

to which you must type a Y.  It will tell you that you are  not known
as an authorized user of  the system, unless your initials  have been
added to the authorized users  list.  Then you get the  messages, and
the  program exits.   You are  now logged  in.  Section  5.1 explains
the LOGIN command more fully.

When you  finish doing whatever  you want, you  should log  out.  The
command for  this is  called KJOB, abbreviated  K.  No  arguments are
required, just K and RETURN.  (As with all monitor commands, you must
be in monitor  mode before entering  the command.) This  command runs
the LOGOUT program, which types out how much computer time  you used,
etc., and kills your job.   Your terminal will become available  in a
few seconds if you don't  type anything else.  If there are  no files
in your directory, the LOGOUT program deletes the directory.  Section
5.2 gives more complete documentation of the logout procedure.



                        1.7  Editing Commands


To enter your program, or to correct it, you will use one of our text
editors.  There are four editors in common use here:

1.   E.  This  is the  one  you'll generally  use.  It  is  a display
editor,  much  like TV  (below)  but much  faster  and  with slightly
different features.

2.  TV.  This  is an earlier version  of our display editor.   It has
been pretty much replaced by E,  but there are still a few  things TV
can do which E can't,  like switching between files in the  middle of
an edit.

3.   SOS.  This  editor is  designed for  use at  Teletypes  or other
non-display terminals.  Files created with SOS include a  line number
at  the  beginning of  every  line.  Editing  commands  use  the line
numbers  to  specify  what  lines  to  change,  delete,  or whatever.
1.7                                            Editing Commands    12


Hopefully you will have no  need to use this editor, since  you'll be
using display terminals.

4.  TECO.  This editor is supplied by DEC.  It is extremely powerful,
in that it allows you  to write editing programs which can  process a
file systematically, and it is very flexible about strange characters
in  the   file.   However,  for   routine  editing  it   is  somewhat
inconvenient to use because it  does not use the display  facility of
the terminals.

Each of these editors is described in its own manual.  A bibliography
is included as an appendix to this manual.  The point to be explained
here is how to use monitor commands to invoke an editor; we'll assume
here that you're using TV.

Suppose  you  want  to  write  a  program  called  PROG  in  the SAIL
programming language.  The monitor command to create a new  file with
TV is CTV.  So you would type

CTV PROG.SAI

(SAI  is the  standard extension  for SAIL  programs.)   This command
tells the monitor to run the RPG (Rapid Program Generator) program, a
command interpreter which abbreviates the sequence of commands needed
to  edit,  compile, load,  and  debug programs.   RPG  reads  the CTV
command, which tells it  to run TV, telling  TV to create a  new file
named PROG.SAI.  RPG remembers the last editing command you typed, so
later you'll be able to edit the file simply by entering a TV command
without having to type the file name again.  (Note--LOGOUT  makes RPG
"forget" your commands, so you have to type the file name  again when
you next log in.)

The command for editing an already existing file with TV is  TV.  You
can enter this command with no argument and it will remember the file
from the last edit command, or you can specify a filename as with the
CTV command above.

The  E  editor,  which  is  the  most  commonly  used  here, includes
provisions  within  it for  carrying  out the  RPG  functions itself.
Therefore, the CETV and ETV  commands analogous to CTV and TV  do not
run RPG; they start E directly.  However, these commands are included
with the RPG commands in this manual because they act the same to the
user.

There is a file you can edit to learn how to use E.  To do  this, log
in and enter the following command:

HELP ETEACH

Then just read what appears on your screen and follow instructions.
1.8                 Commands for Compiling and Running Programs    13


          1.8  Commands for Compiling and Running Programs


Once you have typed in your program, you have to compile it, load it,
and run it.  Compilers like SAIL put out relocatable binary programs.
This  means that  the  program is  in  a form  which  contains enough
information  so that  it  can be  loaded  into any  address  in core.
Addresses  within  the program  are  all considered  relative  to the
program's first word, so the LOADER has to add the actual  address of
that word to all the relative addresses in the program.  Your program
can be loaded along with others, for example a debugging program; the
actual location of any program in your core image will depend on what
other  programs  are loaded  with  it.  (Note  that  this relocatable
binary program format has nothing to do with the  hardware relocation
discussed on page 3.)  The  core image produced by the LOADER  can be
saved in  a DMP  (dump) file,  which can  then be  run directly  by a
monitor command without going through the LOADER again.

Suppose  you  have typed  in  your program,  PROG.SAI.   You  want to
compile, load, and run it.  You could say

EXECUTE PROG

and all those things would happen automatically.  RPG  would generate
a command file for SAIL  telling it to compile PROG.SAI and  start up
the  loader, which  also gets  a command  file.  (RPG  knows  that it
should use  the SAIL compiler  because of the  SAI extension  in your
filename.) Again, RPG  remembers the command,  so next time  you just
have to say EXECUTE and  it'll all happen.  In fact, the  editors all
have  commands which  automatically re-do  the last  compile-type RPG
command.

Suppose, to make this clearer, you find a bug in the program.  To fix
it, you can say

ETV

and E will start editing PROG.SAI.

Then you use E commands to edit the file.  When you're done,  you use
the  exit-to-RPG command,  which  in E  is CONTROL-X  GO.   This will
automatically repeat the EXECUTE command you typed before.

There  are  many  different  versions  of  this  compilation command:
COMPILE will just  compile the program,  LOAD will compile  and load,
etc.   The  RPG  commands  are  listed  in  Section  5.3   and  fully
described in Appendix 1.
1.9                                        Information Commands    14


                      1.9  Information Commands


You can sometimes find out how to use a system command by typing HELP
followed by the command name.  Typing HELP with no argument will list
the kinds of  help available this way.   For instance, if  you forget
how to log in, you can type HELP LOGIN.

To get  a list  of the files  in your  directory, type  the DIRECTORY
command.  You can get the  list for another disk area by  including a
PPN in square brackets as an argument.

You can see  the status of  all the jobs on  the system with  the WHO
command, abbreviated W.  You can  find out about jobs belonging  to a
particular user by typing WHERE  prg (prg is the programmer  name) or
FINGER prg.  These type out information about the given  user's jobs;
try them  to find out  more.  All of  these commands run  programs in
your core image,  so you shouldn't run  them if you need  the program
you  have  there.   These information  commands  can  be  run without
logging in first.



                   1.10  Programs and Core Images


This section discusses the allocation  and use of core storage  for a
job.  The PDP-10 storage is divided into blocks of 1024 words, called
1K.  Each job's core image is a multiple of 1K long.  The  core image
may be located in any contiguous set of actual core blocks  while the
program is running.

Actually, a job may use two distinct contiguous sets of  core blocks,
called  the lower  and upper  segments.  The  job must  have  a lower
segment in order to run.  This segment belongs to that job alone.  If
the job has an upper segment, it may be shared with other  jobs.  One
use of this is to allow several users to run the same  system program
with  only  one  copy  of  the program  in  core;  the  data  for the
individual  users is  stored  in each  job's lower  segment,  and the
common code is in the upper segment.

An upper segment may be write protected, so the program in  it cannot
be  accidentally changed.   This is  usually done  with  shared upper
segments.  Programs can control  the write protection of  their upper
segment by UUO.  Upper segments  are more fully explained in  the UUO
Manual.

Each upper segment has an entry in the system job table,  including a
job  number,  a segment  name,  and much  of  the  status information
1.10                                   Programs and Core Images    15


associated  with jobs.   Some of  the monitor  commands  described in
later sections of this manual refer to upper segments.

The lowest locations  in each job's core  image, called the  Job Data
Area, are  used by the  monitor to store  information about  the job.
Some of this  information is of interest  only to the  monitor, while
other  parts  can  be  used  and  modified  by  the  job  itself.  In
particular, some monitor commands use information from Job  Data Area
words, e.g., starting addresses for the program.  The  description of
such commands will refer to  the relevant word by its  symbolic name,
of the form JOBxxx, e.g., JOBSA is the word containing  the program's
normal start address.  The complete description of the Job  Data Area
is contained in the UUO Manual.
2.                                            Display Terminals    16


                              SECTION 2

                          DISPLAY TERMINALS






                           2.1  Keyboards


Our  display terminals  use a  character set  called  Stanford ASCII.
ASCII is a standard computer character set; our version is similar to
the  standard but  somewhat extended.   In particular,  the "control"
codes in ASCII, which mean  things like "end of text," are  used here
for printing characters like α and ∃ and ∩.  There are seven  bits in
a character code; since the PDP-10 has 36-bit words,  five characters
fit in a  word with one bit  left over.  The complete  Stanford ASCII
character set is listed in Appendix 13.

Each  of  the  printing  character  keys  on  our  terminals  has two
characters  printed on  it (except  the 0  key).  The  bottom  one is
usually a letter or digit, and the top one is some special character.
There are  two SHIFT keys  and a SHIFT  LOCK key, which  make letters
upper  case.   The  keys which  produce  the  special  characters are
labelled TOP.  For example, hitting the "<D" key alone produces lower
case "d"; also holding  down SHIFT produces capital "D";  and holding
down the  TOP key  with it produces  "<" (SHIFT  and TOP  together is
interpreted as TOP).

There  are several  special character  codes, generally  not printing
characters, which  are not  affected by  SHIFT and  TOP.  One  is the
space bar, which  spaces as on any  typewriter.  The TAB key  sends a
tab code, which prints by spacing out to the next tab stop; these are
set eight spaces apart and cannot be changed.  The RETURN key sends a
carriage return code, and the monitor generally provides a  line feed
code after it  automatically. The LINE key  sends a line  feed alone;
this is not too often useful.   The FORM key sends a form  feed code,
and the VT key a vertical  tab.  These two are used by  some programs
as control codes, but not often for their printing effect. The BS key
is backspace (in real ASCII  this code is called delete).   This code
is usually not sent to your program, but is taken by the  line editor
as a command to back up  the cursor.  The ALT key sends an  alt mode;
this code has no printing significance, but is used as a control code
by programs.

Although ASCII is a  seven-bit code, display terminals  actually send
nine-bit codes to programs.  The two extra bits represent the CONTROL
2.1                                                   Keyboards    17


and META keys.  These  keys are like SHIFT  and TOP in that  they are
held  down  along  with  some other  key.   They  have  two different
functions;  when  the character  they  are  used with  is  sent  to a
program, it can be used as a control command.  Editing  and debugging
programs use such single-character commands heavily.  For example, in
the E editor,  CONTROL-META-D means to  delete a line.   However, the
CONTROL and META  keys are also used  as commands to the  system line
editor for inserting characters inside  a line, etc.  The use  of the
line editor is explained in Section 2.2.

There are four more keys  to be described.  They are unusual  in that
none of  them send  characters to  your program  or to  the monitor's
command decoder; they are processed by the monitor's keyboard scanner
and the line editor.  CLEAR is simply a line editor command to delete
the entire  line in  the line editor.   CALL is  used to  interrupt a
program  running  in your  core  image and  return  your  terminal to
monitor mode.   ESC (escape) and  BREAK are used  to signal  that the
characters which follow are a special command to the  display service
routines  in  the  monitor; the  many  different  functions  of these
commands will  be explained  in Section  2.4 and  following sections.
There should be a list of the ESC and BREAK commands attached to your
keyboard; if not, see page 21 to find out how to print one.



                        2.2  The Line Editor


At a display,  the characters you type  are accumulated by a  part of
the monitor called the line editor.  When you end a line by typing an
activation character, the entire line is sent to your program  (or to
the monitor  command decoder).   Generally you  will activate  a line
with the RETURN key,  although others also work.  The  exact workings
of  activation are  discussed in  Section 2.3,  but first,  there are
several editing command  characters which can  be used to  change the
text in the line editor.

There are two line editor cursors displayed on your screen.  The left
cursor  is underneath  the first  character in  the line  editor; the
right cursor is under the  character position you are about  to write
into.  The  cursors are  underlines on Data  Discs, and  triangles on
IIIs.  Also, on IIIs, the characters in the line editor are displayed
somewhat below any other characters on the same line.  If there is no
text in the line editor, the two cursors coincide.

When  you type  a  printing character  into  the line  editor,  it is
displayed at the right cursor position, replacing any other character
which was there before.  The CONTROL and META keys are used to change
the function of characters  typed in.  Also, several  characters have
2.2                                             The Line Editor    18


different functions depending on  whether or not they are  typed with
the right cursor at the end of the line.  For example, BS at  the end
of the line deletes the last character; inside the line, it moves the
cursor left one position without deleting anything.

META  along  with  a printing  character  (including  space  and tab)
inserts  that  character at  the  cursor position,  in  front  of the
character already there, rather than replacing the old character.  At
the end of the line, a META character will activate.

BS at the end of the line deletes the last character.  If it's not at
the end, BS just backs  up the cursor without deleting.   People talk
about deleting  backspace and  non-deleting backspace  to distinguish
these.   CONTROL-BS is  always  non-deleting, and  META-BS  is always
deleting.   (CONTROL-META-BS,  like CONTROL-META-anything,  is  not a
line editor command but an activation character.)

CONTROL-SPACE  is the  opposite of  CONTROL-BS: it  moves  the cursor
forward without  changing the text.   SPACE alone and  META-SPACE act
like any printing character.   At the end of the  line, CONTROL-SPACE
does nothing (it neither moves the cursor nor activates).

The remaining editing commands consist of CONTROL-something.  Some of
them are only  considered as line editor  commands inside a  line; at
the end of the line, they activate.  Whether or not this is  true for
a particular command will be mentioned in each description.

CONTROL-TAB moves the cursor to the end of the line, as if  you typed
CONTROL-SPACE many times.  (Inside the line only.)

CONTROL-FORM is the opposite: it moves the cursor to the beginning of
the line, so the two cursors coincide.  (Inside or end of the line is
ok for this one.)

CONTROL-D  deletes the  character  above the  right  cursor.  (Inside
only.)  Note that this  is different from META-BS, which  deletes the
character to the left of the cursor.

CONTROL-S skips ahead from  the current position of the  right cursor
to the next occurrence of  the character you type next.  If  the next
character you type does not occur to the right of the cursor, nothing
happens.  If the search character  is a letter, the case  must match.
(Inside only.)

CONTROL-K is like CONTROL-S but instead of moving the cursor it kills
characters up to (not including) the one you select.   Again, nothing
happens if the character does not occur.  (Inside only.)

CONTROL-R repeats the last CONTROL-S or CONTROL-K command given while
2.2                                             The Line Editor    19


editing the current line.  It does not use the following character as
an argument, since  it remembers the  argument from the  CONTROL-S or
CONTROL-K command.  (Inside only.)

CONTROL-I  enters  insert mode.   In  this mode,  all  characters are
treated as  if you were  holding down the  META key, until  you leave
insert  mode  by   typing  another  CONTROL  command   or  activation
character.  That is, characters  which you type are  inserted instead
of overwriting  old ones,  and BS is  a deleting  backspace.  (Inside
only.)

CONTROL-number (that is, any decimal number typed while  holding down
the CONTROL key) will  cause a CONTROL command  immediately following
to be  repeated that many  times.  For example,  CONTROL-5 CONTROL-BS
will move the cursor left five positions.  This can be used to repeat
the  BS  command  as  well  as  CONTROL-BS,  META-BS,  CONTROL-SPACE,
CONTROL-D, CONTROL-S (finds the nth occurrence), and CONTROL-K.

CLEAR will delete everything in the line editor.

CONTROL-RETURN will retrieve the last line which was edited,  as long
as  you  haven't  typed  anything since  then.   That  is,  after you
activate  a   line,  if   the  very  next   character  you   type  is
CONTROL-RETURN, the  line is  returned to the  line editor.   You can
send the same line again by  just typing RETURN, or you can  edit it.
This is very handy when a monitor command, for example, fails because
of a spelling error;  you can simply say CONTROL-RETURN,  correct the
error, and say RETURN to activate the corrected command.

The TAB  character is treated  in a special  way by the  line editor.
Commands like CONTROL-SPACE treat a  TAB as a single character,  so a
CONTROL-SPACE  when the  cursor  points to  a TAB  will  move several
spaces  to  the  right.  Typing  a  character  without  control bits,
however, only replaces the first space of the TAB.  There  will still
be a TAB in the buffer, unless the TAB was positioned so that  it was
only equivalent to one space,  in which case it goes  away completely
when another character is typed over it.



                     2.3  Line Editor Activation


This section is about the workings of line editor activation: how the
line  editor decides  to release  characters to  your  terminal input
buffer.  There is quite a bit of arcane detail here, covering special
cases, which is  not generally important  to the user.   This section
can be skipped by most readers.
2.3                                      Line Editor Activation    20


The activation  mechanism can  be controlled to  some extent  by UUOs
given by your program.  Specifically, your terminal can be  in normal
activation mode or special activation mode.  In the latter case, your
program determines  exactly which  characters activate.   The program
can  also  disable  the  CONTROL-RETURN  function,  as  well  as  the
automatic insertion of line feed after return.  However, the  rest of
this discussion assumes you are in normal activation mode.

Any character  with CONTROL  or META  on will  activate unless  it is
taken as a meaningful line editor command.  In particular,  META will
activate  at  the  end  of the  line.   CONTROL  always  activates on
characters  which  are  not meaningful  line  editor  commands, e.g.,
CONTROL-A always activates, and CONTROL-D activates at the end of the
line only.   CONTROL-META together  always activates.   RETURN, LINE,
and  ALT always  activate, regardless  of the  CONTROL and  META bits
used.   (Actually,  in the  case  of  RETURN, it  is  the  line feed,
supplied by the monitor, which is really the activation character.)

When you type an activation character, all the characters in the line
editor are  transferred to  your terminal's input  buffer and  are no
longer editable.  If your program is doing line-at-a-time  input, the
character  which activated  the  line editor  may  or may  not  be an
activator  for  your  program.   (Normally,  line  editor  activation
characters also activate  the program, but  this may be  changed with
special  activation.   For  example,  the  line  editor  cannot store
characters with control bits, so such characters always  activate the
line editor if they are not line editor commands.  Your  program may,
however, choose not to be activated by such characters, in which case
they  remain  in  your  input buffer  until  a  character  which does
activate the program  is read.)  When  you type a  program activation
character inside a line, all characters in the line editor  are moved
to your input buffer, but  your program can only read (in  line mode)
characters up to  the activation character.   The program may  ask to
get a nine-bit representation for the characters, so the  CONTROL and
META bits of the activation  character are sent.  There is  a special
kludge in the line editor  so that whenever you type  RETURN (without
CONTROL or META), the RETURN is put at the end of the line, as if you
had typed CONTROL-TAB first.   This is not true for  other activation
characters,  so characters  after the  activation character  won't be
editable,  but won't  be available  to the  program either  until you
activate again.  Most programs  are written so that  something fairly
intuitive happens when you activate in the middle of the line, but it
is possible to confuse yourself.  In particular, when you re-edit (by
typing  CONTROL-RETURN) a  line  which was  activated  with something
other  than  RETURN, the  activation  character appears  in  the line
(without control  bits); if  you type  RETURN, you  get the  same old
activation character, not a  RETURN at all!  There are  some peculiar
things which happen if you delete the old activation character first,
though--it is possible to  have the RETURN activate the  line editor,
2.3                                      Line Editor Activation    21


but not  put in  any activation character  and not  actually activate
your program until you type a second RETURN.



                   2.4  ESCAPE and BREAK Commands


Certain special  characters are  used to control  the status  of your
display  terminal.  These  are  processed directly  by  the monitor's
keyboard  scanner,  whether or  not  you are  in  monitor  mode.  One
example, mentioned above, is  CALL.  This key stops your  program, if
one is running, and returns  you to monitor mode.  You can  also type
CONTROL-CALL or META-CALL for a deferred call--the program is stopped
when it  tries to  read the  CALL character  from your  input buffer.
Thus  you  can type  some  commands  into a  program,  followed  by a
deferred call; when  the program is  finished with your  commands and
asks for more, it will be stopped.

There are several commands using the ESC and BREAK  keys.  Generally,
the format is ESC or BREAK, then possibly a numeric argument,  then a
letter  which  specifies  the command.   There  should  be  a concise
summary of these commands attached  to your keyboard; if not,  log in
and type this:

HELP DDKEY

(or IIIKEY instead of DDKEY if you are using a III terminal) to print
the list on the XGP.

ESC O will stop typeout from your program.  Any characters already in
your output buffer are  deleted, and any attempted typeout  from your
program is ignored.  The program continues running, however.  Typeout
is  resumed  if  you type  BREAK  O,  or if  your  program  reads any
characters from your terminal.

Display  terminals are  normally in  full character  set  mode, which
means you can  type in upper and  lower case letters.  You  can leave
this mode by typing BREAK F, which has essentially the same effect as
pushing  the  SHIFT LOCK  key.   You type  ESC  F to  return  to full
character set mode.  The only use for this that I know of is that you
can convert a  line of text in  a file to upper  case in E  by typing
BREAK F, then something like CONTROL-SPACE to load the line  into the
line editor, then RETURN.  Try it.

Some programs which  read data from your  terminal expect an  "end of
file" indication after  the data.  The thing  to type to  supply this
signal is CONTROL-META-LINE.
2.4                                   ESCAPE and BREAK Commands    22


It  is  possible to  suspend  typeout from  your  program temporarily
without losing  output, as with  ESC O.  Typing  CONTROL-BREAK starts
this automatic holding.  The word HOLDING appears at the top  of your
screen,  and  the  program  is  stopped  if  it  tries  to  type more
characters  than fit  in your  output buffer.   Automatic  holding is
released  by  typing   any  line  editor  activation   character,  or
CONTROL-CLEAR.

Sometimes you  may want to  write a program  which you  can interrupt
with a signal from your keyboard, without having to keep checking for
terminal input  in the program.   For example, if  you run  a program
which searches a large data base by command, you may want to  be able
to abort a  search without stopping the  program.  Typing ESC  I will
generate an  interrupt condition which  your program may  enable; the
use of program interrupts is described in the UUO Manual.



                          2.5  The WHO Line


The next set of commands have  to do with the WHO line, a  display of
system status and the status of a particular job on the top two lines
of  your  screen.   Once  you  start  a  WHO  line  display,   it  is
automatically updated until you  turn it off explicitly.  To  start a
WHO line for the job at  your terminal, type ESC W.  You can  see the
WHO line for another job, job  number n, by typing ESC n W.   To turn
off  your WHO  line  display, type  BREAK  W.  (Note:  this  does not
actually make the  WHO line disappear  on Data Discs,  where anything
you display stays on the screen until it is explicitly erased.)

One use of the WHO line is to keep track of the progress of a  job of
yours other than the one at the terminal you're using.  To facilitate
this, typing ESC Q will display  the WHO line of the next job  in the
monitor's job table with your programmer name (or with the  same name
as  the job  whose  WHO line  you  are already  displaying,  if any).
Typing ESC Q  repeatedly will cycle through  all such jobs.   BREAK Q
does the same thing, except that it searches the job table backwards.

This is the format of the WHO line:

     III DD JBS,TCOR  R,RCOR UCOR  NL%  DSKQ  DATE  DAY  TIME
JOB PPN TTY  QUEUE   JOBNAM SIZE RUNTIME-RP XTIME-XP DSK SEG (ALIAS)

The first line is the system WHO line:
2.5                                                The WHO Line    23


  III      number of III terminals in use (maximum=6)
  DD       number of Data Disc channels in use (maximum=31)
  JBS      number of jobs logged in
  TCOR     total core of all jobs (including swapped out)
           in blocks of 1024 words
  R        number of jobs actually run in the last few seconds
  RCOR     total core of the jobs counted in R
  UCOR     amount of core available for running user jobs
  NL       system null-time percentage over the last few seconds
  DSKQ     number of jobs waiting to use the disk
  DATE     uh, let's see...
  DAY      day of the week
  TIME     time of day (24-hr clock)

The second line refers to a particular job:

  JOB      the job number of the job being displayed
  PPN      its logged-in project-programmer name
  TTY      its terminal number (in octal) or DET for detached jobs
  QUEUE    the system queue that the job is in (see below)
  JOBNAM   the program being run
  SIZE     size of the job's core image
  RUNTIME  total run time since login, in minutes and seconds
  RP       RUNTIME as a percentage of the job's total wait time
           (time the job was runnable but not running)
  XTIME    incremental runtime, normally reset on terminal input
           but see below
  XP       XTIME as a percentage of incremental wait time
  DSK      number of incremental disk operations (reset with XTIME)
  SEG      name of upper segment if any
  ALIAS    disk PPN (see below) if any
2.5                                                The WHO Line    24


Some of these need more  explanation.  The QUEUE is an  indication of
the immediate status of  the job--is it runnable, waiting  for input,
stopped, etc.  These are the possible queue names:

  RUNQ     The job is runnable and not waiting for I/O, etc.
  TQ       This is a high-priority run queue which jobs are in for a
           short time after leaving certain kinds of I/O wait.
  STOP     The job is stopped because it exited, the user typed CALL,
           or there was an error in running the job.
  NULQ     The job has no core image.
  IOWQ     The job is waiting for some input/output operation, or for
           the completion of a SLEEP or JOBRD UUO.  This most often
           means the job is waiting for the user to type something.
  DIOW     The job is waiting for some I/O operation and may not be
           swapped out until it is completed.
  INTW     The job has suspended itself waiting for an interrupt.
  DWQ      The job is waiting for a device (e.g., LPT) to be free.
  MTQ      The job is waiting for the magnetic tape controller.
  DTQ      The job is waiting for the DECtape controller.
  DCQ      The job is waiting for the data controller
           (used for mag and DEC tapes).
  CMQ      The job is not in core and needs to be brought in quickly;
           if a job stays in this queue for long, something is wrong.

Some special characters may be displayed after the queue name:

      -    The job is currently running.
      *    The job is swapped out. A second * means the upper segment
           is swapped out.
      ⊗    The job has been locked in core by the LOCK UUO.
      \    The job is running a spacewar module on the PDP-10.
      /    The job is running a spacewar module on the PDP-6.
      X    The job is running spacewar modules on both processors.

Some of the  above may not  be clear until  you read the  UUO Manual.
The  alias is  a PPN  used as  the default  directory for  disk files
instead of your logged-in PPN.  There is an ALIAS monitor  command to
set the alias for your job.

XTIME is an incremental  run time, measured in minutes,  seconds, and
60ths of  a second  (a 60th  of a second  is called  a tick).   It is
normally reset whenever the  program is started by a  monitor command
other than CONTINUE, and also  whenever the job is awakened  by input
from the terminal after having  been in IOWQ waiting for  such input.
Note  that if  you type  ahead, so  that the  job never  enters IOWQ,
terminal  input will  not  reset XTIME.   It is  possible  to inhibit
resetting  of  XTIME  with  the  BREAK  X  command  (see  below).  If
resetting is inhibited, the character separating spaces from ticks in
the display will be " instead of ' as it usually is.
2.5                                                The WHO Line    25


BREAK  X inhibits  resetting  your job's  XTIME.  ESC  X  resumes the
automatic resetting as described above.  Neither of these changes the
current value of your XTIME.  Typing  ESC 1 X will set your  XTIME to
zero; BREAK 1  X will set  it equal to  your RTIME (total  run time).
Both ESC 1 X and BREAK  1 X inhibit automatic resetting, so  you have
to type ESC X if you want to restore this.



                      2.6  Page Printer Control


There are two ways of printing on display terminals.  To  exploit the
full capabilities of the  display for graphics, display  programs can
explicitly control the positioning of points, vectors, or characters.
On  III   terminals,  16  such   display  programs  can   be  written
independently, and any combination of them activated or  displayed at
any time  under program control.   These display programs  are called
pieces of glass.   On Data Disc  terminals, only one  display program
can be run on each Data Disc channel, although the effect of multiple
pieces of glass can be  gotten in a different way by  displaying more
than  one channel  on the  screen (see  Section 2.7,  which describes
the video switch).

The other way of printing  on a display terminal is simply  to output
text to be printed in order  as if on a piece of paper.   The monitor
automatically  "scrolls" such  output; when  the area  of  the screen
being used fills up, the text  is moved up a few lines, with  the top
part disappearing.  Sixteen of these pieces of paper can be displayed
at once, on different parts of the screen.  At any time, one of these
pieces of paper must be selected by the program as the one to receive
page  printer output.   The  dimensions of  each piece  of  paper are
controlled by the program, but the currently selected one can also be
controlled from the terminal with ESC commands.

The dimensions of the  page printer include several  factors.  First,
the vertical position of the top  line of the page.  This can  be set
by the command ESC n Y for line n.  (Lines 1 and 2 are where  the WHO
line goes; the normal position is line 4.) ESC Y resets  the vertical
position to normal.

The scrolling function is controlled by two parameters: the number of
lines typed before a  glitch (the upward repositioning of  the text),
and the number of glitches on the page.  These are set by ESC n L for
lines/glitch and  ESC n  G for glitches/screen.   The defaults  are 4
glitches of  9 lines for  Data Disc terminals,  and 12 glitches  of 2
lines for  III terminals.   ESC L  and ESC  G restore  the respective
counts to normal.
2.6                                        Page Printer Control    26


It is  possible to  cause automatic  holding, as  with CONTROL-BREAK,
every n lines or every n glitches.  The commands for this are ESC n E
for every n lines, and ESC n J for every n glitches.  At  each pause,
the  word HOLDING  will  appear on  the  third line  of  the display.
CONTROL-CLEAR will resume output as  usual.  ESC E and ESC  J disable
the respective automatic pauses.

Typing ESC N  will normalize your page  printer.  BREAK N  will clear
your screen, normalize the page printer, and display the text  in the
page at  the normal  position.  To refresh  the page  printer display
without changing the page printer geometry, type ESC P.  BREAK P will
clear the screen and then do ESC P.  These are useful for getting rid
of any noise which may appear on your screen.  There is a rarely-used
ESC R to refresh just the display of your line editor.

Note: Any RESET of your job, either by the RESET UUO or automatically
by the  system, eliminates  all but  piece of  paper 0,  selects that
piece of paper  for further output,  and normalizes the  page printer
display.  The UUO Manual explains the RESET function.



                       2.7  Data Disc Control


Certain ESC and BREAK  commands have special functions for  Data Disc
terminals only,  and some  for III terminals  only.  This  section is
about the Data Disc ones.

The usual display on a  Data Disc screen is green  letters (hereafter
called  "white")  on a  black  background.  It  is  also  possible to
display black  on white, by  typing BREAK C.   To restore  the normal
white on black, type ESC C.   Both of these clear the screen,  so you
have to type  ESC P to refresh  your page printer display.   Black on
white  display  requires  increasing  the  contrast   and  brightness
controls to be visible.  This is not the world's most useful feature;
it is also possible, under  program control, to display only  part of
the screen in black on white.

The  remaining  Data Disc  commands  are used  to  control  the video
switch.   This device  allows you  to select  from the  32  Data Disc
channels, plus  various TV cameras  and video synthesizers,  what you
want to  see on your  screen.  You  can see more  than one  Data Disc
channel at a time, but only one of the analog channels (the cameras).
You can select an analog channel along with a Data Disc  channel only
if the  two are  synchronized; e.g.,  the lounge  TV signal  can't be
combined with a Data Disc channel because the synchronization  of the
former is not under our control.
2.7                                           Data Disc Control    27


Data Disc channels in  use by a job  may be public or  private.  Only
public channels may be selected by other users.  The channel  used by
a  terminal is  normally  private.  The  command ESC  H  hides (makes
private) your terminal's channel; BREAK H makes it public.

Video switch commands are generally of the form ESC n x, where n is a
channel number  (Data Disc or  analog channel) and  x is  the command
letter.  The form BREAK n  x interprets n as a terminal  line number.
Thus, ESC 30 S selects Data  Disc channel 30, but BREAK 30  S selects
whatever channel is assigned to TTY30.

ESC or BREAK n S makes a permanent selection, which remains in effect
until you  give another video  switch command to  change it.   ESC or
BREAK n T makes a temporary selection, which reverts to the permanent
selection whenever  your job  is RESET by  UUO or  automatically.  To
display more than one Data Disc channel at once, type ESC or  BREAK n
A to add a channel; ESC or BREAK n D deletes a channel.

Using ESC with  no numeric argument on  a video switch  command means
your  terminal's channel.   Thus, ESC  S restores  your  own display.
BREAK with no numeric argument  is the same as ESC 45,  which selects
the lounge TV.* The ESC  N and BREAK N commands, which  normalize the
page printer on all displays, also imply ESC S on Data Discs.

Note that your program can  also modify the video switch  settings by
UUO.



                          2.8  III Control


At a III terminal, several different display programs,  called pieces
of glass ("pog"),  may be running at  once.  You can choose  which of
these (zero or more at once) are actually displayed.

ESC n S selects piece of glass number n only.  ESC n A adds  piece of
glass n, and ESC n D deletes pog n.  If no numeric argument  is used,
these commands apply  to all pogs, e.g.,  ESC D clears all  pogs from
the screen.

ESC C eliminates all pogs (your page printer is still displayed).  It
is different from ESC D  in that the display programs  are completely
forgotten, so they cannot be reselected.


------
* The first edition said, at  this point, "Thus, BREAK S at 6pm  on a
weekday selects Star Trek."  However, I understand that we  are being
spared that this season.
2.8                                                 III Control    28


Note that the selection of display programs can also be controlled by
a UUO in your program.



                      2.9  Audio Switch Control


Associated with each display  terminal is a loudspeaker which  can be
connected  to various  sound sources  under computer  control,  by an
audio switch analogous  to the video  switch for Data  Disc channels.
There are 20 (octal) audio  switch input channels, numbered 0  to 17.
Only one channel can be connected to your speaker at a time.

One of the input channels is normally silent, but is connected to the
telephone paging system when a page is in progress (i.e., someone has
dialed  9  on the  com  line).   When you  are  listening  to another
channel,  you  may  choose  to  be  switched  to  the  paging channel
automatically when a  page is in progress  and then returned  to your
original channel.

The command  ESC n  U will select  audio channel  n and  allow paging
interruption.  BREAK n U selects channel n and does not allow paging.
ESC U or BREAK U selects the silence/paging channel.

At a Data  Disc, the BREAK  S, BREAK T,  and BREAK A  commands, which
select the lounge TV picture for your screen, also select  the lounge
TV audio for your speaker.

Your program can control the audio switch selection for your terminal
by UUO.  Although programs cannot in general change the  audio switch
setting for another terminal, there  is a BEEP UUO which can  be used
to  cause any  terminal's  loudspeaker to  be connected  to  the beep
generator for a short time (less than one second).  This is  used by,
e.g., the SEND command to call the recipient's attention to a message
on his screen.  You can permit or refuse such beep connections by UUO
or by escape commands; BREAK B refuses beeps, and ESC B permits them.
Any change to your audio  switch setting by other means (e.g.  ESC U)
also cancels the effect  of BREAK B, so  you must repeat the  BREAK B
command after changing your selection.

As we go to press, the following audio switch inputs are connected:
2.9                                        Audio Switch Control    29


  0        silence/paging
  1        lounge TV
  2        tuner in Helliwell's office
  3        tuner in machine room
  4        digital-to-analog converter channel 1
  5        beep generator
  6        AM tuner
  7        tuner in Harvey's office
  10       Voder
  16       TV in Moravec's office
  17       KSAN
3.                                                    Teletypes    30


                              SECTION 3

                              TELETYPES




Teletypes do  not have  display screens,  nor do  they have  the full
Stanford ASCII  character set.   This means  that certain  things are
typed differently.

The CONTROL (CTRL) key on a Teletype does not produce the  same codes
as  CONTROL  on a  display.   Instead, it  produces  codes  which, on
display  terminals,  represent  some  of  the  TOP  characters.  Most
programs which deal with Teletypes, however, either cleverly use only
characters  which are  the  same on  all terminals,  or  have special
notations  for use  at  Teletypes.  In  particular, there  is  an SOS
representation  (named   after  a   Teletype  editor)   for  printing
characters not found on Teletypes, namely a question mark followed by
some other character.  See Appendix 13.

To get the effect of CALL, type CONTROL-C twice.  (Control characters
on Teletypes generally echo as ↑<character>, so now you know why CALL
on displays prints ↑C.) Deferred CALL is a single CONTROL-C.

Although there are several models of Teletypes and similar terminals,
most of ours do not have lower case letters.  The SHIFT key  on these
terminals,   like   the   TOP   key   on   our   displays,   produces
non-alphanumeric printing characters.  Most of these are  labelled on
the Teletype keys, but you may not find [ (SHIFT-K), \  (SHIFT-L), or
] (SHIFT-M) labelled on some models.

There  is no  line  editor on  Teletypes.   You can  delete  the last
character on a  line by typing RUBOUT,  which prints a  backslash and
then  the  deleted  character.   Successive  RUBOUTs  will  print the
characters  deleted,  until   a  non-RUBOUT,  which   prints  another
backslash and  then whatever  you typed.   CONTROL-U will  delete the
entire line, like CLEAR on a display.

Most  of the  ESC  and BREAK  commands have  no  Teletype equivalent.
CONTROL-O flushes  typeout like  ESC O.   A second  CONTROL-O resumes
typeout like  BREAK O.  CONTROL-B  starts and stops  typeout holding,
like CONTROL-BREAK and CONTROL-CLEAR on display terminals.  There are
monitor commands to provide some of the ESC facilities; e.g.,

TTY WHO

will type out your who line once.
3.                                                    Teletypes    31


The  end-of-file  character  for  Teletypes  is  CONTROL-Z.   If your
program does input by TTYUUO, CONTROL-Z is converted to 612 (the code
for  CONTROL-META-LINE).   TAB  is  typed  as  CONTROL-I.    FORM  is
CONTROL-L,  and  VT  is  CONTROL-K.   RETURN,  LINE,  and   ALT  have
corresponding Teletype keys.   (The key for  ALT may be  labelled ALT
MODE, ESCAPE, or PREFIX depending on when the Teletype was built.)

It is possible  to use our computer  from another computer,  over the
ARPA network, or  by telephone connection.  The  Teletype conventions
also apply to these connections.
4.                                       Basic Monitor Commands    32


                              SECTION 4

                       BASIC MONITOR COMMANDS




Commands  like  LOGIN  tell  the  monitor  to  run  particular system
programs in your core image.  In this section, monitor commands which
do not refer  to a specific program  are described.  Some of  them do
not refer  to programs  in your core  image at  all, but  are handled
entirely within  the monitor itself;  others run programs,  but allow
you to specify the program as a command argument rather than implying
a particular one like LOGIN.



                        4.1  Running Programs


The RUN command  takes as arguments an  optional device name,  a file
name, and an optional core  size argument.  If the first  argument is
not a device name, DSK is used.  The only allowable devices  are DSK,
SYS, MTAn, and DTAn.  Running programs from magnetic tape  or DECtape
is not recommended.  If the file name does not include  an extension,
DMP is implied.

The core size argument, if any, should be a decimal number indicating
the number  of 1K  (1024 word)  blocks desired  for your  core image.
This must be at  least as much as the  saved core image, but  you can
ask for more.  Certain  programs with variable buffer space  will use
as much as you initially allocate.  (Programs can increase their core
size dynamically by UUO.)

If you are running from magnetic tape, the core size argument must be
used;  otherwise,  the size  of  your core  image  before  giving the
command will be used.   This is because the monitor  cannot determine
the size of a file on magnetic tape before reading it.

The program is loaded into your  core image, your job name is  set to
the name of the dump file, and the program is started at the starting
address specified in the dump file.

The R command is used for running system programs.  The command

R FOO 10

is identical to

RUN SYS:FOO 10
4.1                                            Running Programs    33


(The SYS  device is actually  the disk, but  with the  special system
directory [1,3] implied.  This directory is used to store system dump
files.)

By using the  GET command (abbreviated G),  it is possible to  load a
dump file  into your  core image without  starting it.   This command
takes the same arguments as RUN, but instead of starting the program,
it types  out a message  indicating the size  of your core  image and
leaves your terminal in monitor mode.

All of the commands in this section cause a RESET of your job.



                    4.2  Manipulating Core Images


The following commands refer to words in the Job Data Area  (see page
15) of  your core  image.  These words  are generally  set up  by the
monitor or the LOADER.  The UUO Manual has a complete  explanation of
the Job Data Area.

The CORE command is used to find out or change the size of  your core
image.  CORE may be abbreviated  C.  If you include an  argument, the
size of your core image will  be set to that many blocks.  If  you do
not give  an argument, your  core size is  typed out, along  with the
size of  your upper  segment, if any;  a final  line gives  the total
amount of core available for user jobs.  If you give the CORE command
when you are not logged in, you get only the last line.

The command CORE 0 destroys your core image.  It also causes a system
RESET of your job, releasing any I/O devices you were using, etc.

The way to create core image dump files which can be loaded  later is
with the SAVE command.   This takes device, file, and  size arguments
just like GET.  This command also does a RESET, and it does  not save
your accumulators.  Therefore, the program cannot be  continued after
a SAVE command, although it can be restarted.

Unless your core  image includes DDT  or RAID (JOBDDT  nonzero), only
the locations up  to the address in  JOBFF are saved. (This  does not
apply if you use a core size argument.) JOBFF is set by the LOADER to
the highest address  it loads into, so  any core which  was allocated
dynamically  by your  program will  not be  saved unless  the program
updates  JOBFF.  I/O  buffers  allocated for  you by  the  system are
allocated above JOBFF, which the monitor then sets to the new highest
address.

If your program includes an upper segment which you wish to save, you
4.2                                    Manipulating Core Images    34


should  use the  command  SSAVE.  This  is  just like  SAVE  in other
respects.  SAVE never saves upper segments.

It  is  possible  to  examine and  alter  words  in  your  core image
individually by  monitor commands.  The  command E (examine)  with an
octal argument  will type  the contents of  the specified  address in
octal.  The DE (deposit) command takes three arguments in  octal: the
left  and right  halves of  the  word you  want to  deposit,  and the
address.  DE  without the  address argument uses  the address  of the
last  E or  DE command.   E with  no argument  examines  the location
following the last one used by E or DE.  (Note that the DDT  and RAID
debugging programs provide a much more versatile way to do this.)

If your core image includes  an upper segment (see page 14),  you can
set  or clear  the write  protection bit  with the  SETUWP  or CLRUWP
commands.  You  cannot clear  write protection  for a  sharable upper
segment if it  is protected against you.   (See the UUO Manual  for a
complete discussion of upper segment protection.) These commands also
take an optional octal argument, which is used to set  the protection
code for the segment if you are permitted to change the code.



                       4.3  Starting Programs


The following commands refer to words in the Job Data Area  (see page
15) of  your core  image.  These words  are generally  set up  by the
monitor or  the LOADER  (except for  JOBREN).  The  UUO Manual  has a
complete explanation of the Job Data Area.

The  START  command (abbreviated  S)  is generally  used  to  start a
program at its  normal starting address  in JOBSA.  This  command can
also be used  with an octal  argument specifying some  other address.
If the octal argument is preceded  by + or -, the number is  added to
or subtracted from the program's normal starting address to determine
the desired starting address.

The  REENTER  command  starts  the  program  at  the  reenter address
specified in  JOBREN, if  there is one.   JOBREN must  be set  by the
program if  it wants to  use this capability.   Program documentation
will explain the use of the REENTER command for a particular program.
An octal argument preceded by + (optional in this case) or -  will be
added to or subtracted from the reenter address.

The DDT command starts the program at the address in JOBDDT,  if any.
This  address  is  set by  the  LOADER  if either  DDT  or  RAID (the
debugging programs  for Teletypes  or displays)  is loaded  with your
program.
4.3                                           Starting Programs    35


When a program is stopped by typing CALL, by a UUO in the program, or
by various other conditions,  the address of the next  instruction to
be  executed is  stored in  JOBPC.  If  the job  is  continuable (not
stopped because of an irrecoverable error), the CONTINUE command will
start it at that address.  (The START, REENTER, and DDT commands will
work even if  the job is not  continuable, except for  certain errors
which destroy the core image irretrievably.)

All of the above commands place your terminal in user mode,  that is,
anything you type  will be processed  under control of  your program.
It is  also possible to  start a program,  but leave the  terminal in
monitor  mode.  In  this case  you can  still enter  monitor commands
which  do not  affect your  core image.   Monitor commands  which are
illegal while your  program is running  will give the  message PLEASE
TYPE ↑C FIRST.

The CSTART command is like START but leaves your terminal  in monitor
mode.   Like START,  it will  take the  desired start  address  as an
argument or use the contents of JOBSA.  The CCONTINUE command  is the
monitor mode equivalent of CONTINUE.  There is no such equivalent for
REENTER or DDT.  With the  terminal in monitor mode, the  program can
still type output on it, but an attempt at reading from  the terminal
will make the job wait (in IOWQ) until the terminal is placed in user
mode.

The HALT command stops  your program.  The monitor converts  the CALL
key  into  this  command,  so  you  should  never  need  to  type  it
explicitly.  (The only time you can type it explicitly, of course, is
if you started the program with CSTART or CCONTINUE.)



                         4.4  Detached Jobs


Normally,  any user  job is  associated with  a  particular terminal.
However, it is possible to detach the job so it can  continue running
while you do  something else (another  job) at your  terminal.  Also,
the  monitor  sometimes starts  up  detached jobs  itself  to perform
various system functions.

Detached jobs can  run, and do all  the things attached jobs  can do,
except that if they try to output to device TTY, the output  is lost;
attempted input from TTY makes the job wait indefinitely (until it is
attached).  If a  detached program executes an  EXIT UUO, the  job is
killed.

The  DETACH  command  detaches your  job,  leaving  your  terminal in
monitor mode and  not logged in.  You  can then log in  again without
4.4                                               Detached Jobs    36


affecting the old job.  DETACH takes no arguments.   Several commands
described below combine the DETACH function with other useful things.
Please remember not to leave  jobs detached forever, but to  log them
out eventually!

The ATTACH command is used to attach your terminal to a detached job.
If you are already logged  in, your old job is detached.   The ATTACH
command takes  two arguments, a  job number and  the PPN  under which
that job is logged in.  (If  you are already logged in with  the same
PPN, you need not give the second argument.) The job must be detached
before you give the command.  Note that if you were displaying  a WHO
line for your old job, it will still be displayed, indicating the job
as detached.  This is handy for re-attaching it when you want  to, in
that it shows the job  number.  (Typing ESC W again will,  of course,
display the WHO line for your new job.)

The FORK command will detach your  old job and log in a new  one.  It
is faster than DETACH followed by LOGIN, because it does not  run the
LOGIN program.  Instead, it merely copies the system information from
your old job into the new  job.  In particular, if you have  an alias
in  your old  job, it  is  copied to  the new  job as  well.   If the
system's job capacity is used up, so that it is impossible to start a
new job, your terminal remains attached to the existing job.

Often you want your program to continue running in the old  job while
it is  detached.  You could  say CCONTINUE and  then DETACH,  but the
command  CDETACH combines  these functions.   There is  also  a CFORK
command which combines CCONTINUE and FORK.



                         4.5  Device Control


Certain I/O devices can only be used by one user at a time, such as a
magnetic tape unit.  In some cases, like the line printer, the system
provides a  facility for queueing  print requests so  that individual
users need not actually control the device themselves.  However, when
a user does need to use such a device, the ASSIGN command is  used to
ensure that only  one user at  a time tries  to use the  device.  The
ASSIGN command (abbreviated  A) can also be  used to cause  a logical
device name to be  associated with a particular  device.  Thereafter,
any reference by your program to the logical name will  be translated
into the corresponding physical device.

The  command takes  two  arguments, a  physical device  name,  and an
optional logical name.  The physical name can be generic: the command

ASSIGN MTA
4.5                                              Device Control    37


will select an available mag tape unit (MTA0 or MTA1) if there is one
available.  You can also select a particular unit explicitly.

The logical name feature is  sometimes used by programs to  allow you
to  control their  I/O  without having  to type  instructions  to the
program  itself.  For  example, a  program which  produces  a listing
output might direct it to  a particular filename on device  name LST.
Before running the program, you could type

ASSIGN DSK LST

to write the listing file on the disk, or

ASSIGN TTY LST

to type it out at your terminal.  You can also change the  meaning of
what is normally a physical device name this way--the command

ASSIGN DSK LPT

will make a program which was written to write its output on the line
printer  use a  disk file  instead.  You  might do  this if  the line
printer is not available when you want to run the program.

Non-local guest  account users  (see LOGIN,  Section 5.1)  cannot use
most non-sharable devices, either by program request or by the ASSIGN
command.  Since  there is  no operator on  this system,  remote users
have  no  way to  mount  tapes, collect  listings,  etc.;  hence, the
monitor does not allow such users to attempt I/O on those devices.

The ASSIGN command is used in  a special way for User Disk  Packs.  A
UDP may be used as a public or a private device.  In the former case,
other jobs may use the same UDP at the same time, as with  the system
file disks.  A privately assigned UDP, however, is restricted  to the
one job which assigned it.  (Note: a privately assigned UDP  is still
a  sharable device,  in the  sense  that the  job which  owns  it can
operate on several files simultaneously, unlike  non-sharable devices
like DECtape drives, on which  only one operation can be  in progress
at any  time.) A  UDP is  normally a  file-structured device,  with a
directory structure  just like  the one described  for the  main file
disk in Section 1.5. However, it is also possible to use a UDP  as an
unstructured device, in which allocation of storage on the  disk pack
is done explicitly by the  user program.  This mode of using  the UDP
is called old mode (because  it used to be the only  mode available).
The format of the ASSIGN command for a UDP is

ASSIGN mode UDPn logical-name

The optional mode argument can be
4.5                                              Device Control    38


  PUBLIC   public access, file structured UDP
  PRIVATE  private access, file structured UDP
  OLD      private access, non-structured UDP

The default  mode is  PUBLIC.  A  later ASSIGN  command for  the same
device can be used to change the mode from PRIVATE to PUBLIC, or from
PUBLIC to PRIVATE if no other jobs are using the device.  However, to
change into or out of  OLD mode, the device must first  be deassigned
by all jobs using it.  This is because a particular pack either is or
isn't formatted for  file structured use, and  the mode given  in the
ASSIGN command must agree with that of the pack itself.   (A mismatch
is not detected when you give the ASSIGN command, but will  be caught
when  your  program  actually  tries to  use  the  device.)  The only
exception is that a formatted  pack may be read, but not  written, in
OLD mode.

Although we have only one  disk drive for user packs at  present, the
monitor  provides for  the possibility  of several  such  drives, and
treats UDP  as a  generic device name.   The command  ASSIGN UDP will
select a drive  only if it  is not in  use, although a  command which
specifies a particular drive (ASSIGN UDP1) will succeed if  the drive
is in use but PUBLIC.  Unlike other devices, the UDP must be ASSIGNed
before it can be used by a program, to ensure that the proper mode is
used.  For more details on the use of user packs, see the UUO Manual.

Once you have assigned a device with the ASSIGN command, no other job
can use  it until  you release  it with  the DEASSIGN  command.  This
command, abbreviated D, takes  either a logical or a  physical device
name as argument.  (Note--Assigning DSK or SYS does not prevent other
users from using  the disk.) It  is possible for  a program to  use a
device which is not assigned, but the device is released in that case
as soon as the program stops using it.  The DEASSIGN command  with no
argument will deassign all devices assigned by your job.

Because UDPs can  be assigned in a  way which permits  public access,
the  DEASSIGN command  for a  UDP types  a message  at  your terminal
indicating  whether or  not the  pack should  be dismounted.   If you
interrupt a  program which is  using a UDP  and deassign the  UDP, it
will still be  considered in use by  your program until you  reset it
(for example, by the CORE 0 command).  You will then be told that you
may dismount the pack.

The job which has a device  assigned may give it to another  job with
the REASSIGN command.  This  command takes two arguments,  the device
name  and a  job number.   This can  occasionally be  useful  if, for
example, one job writes a  tape which another should then  read.  The
REASSIGN command prevents the possibility of another job grabbing the
tape unit before the intended recipient does.
4.5                                              Device Control    39


The FINISH command  (abbreviated F) is  like DEASSIGN except  that it
releases the  device from  your program  as well  as from  the ASSIGN
command assignment.  If the  device is a directory device  which your
program had open for output, the file is closed so that as  much data
as the  program wrote will  be saved.  (This  applies in the  case in
which the program was stopped before its normal exit, either  by CALL
or by an error.) F with no argument releases all devices.

The FLUSH command is designed to allow a terminal which is not in use
but  somehow  has something  in  its  input or  output  buffer  to be
emptied.  It takes  a device name as  argument; the device must  be a
terminal which is not in use, or your own terminal.  This command may
be used without logging in.



                       4.6  System Information


Several commands exist to find  out various things about your  job or
others.  Some  of these  duplicate information  available on  the WHO
line  at display  terminals.  None  of the  commands in  this section
affect your core image.

The PJOB command types  the job number of  your job, if you  give the
command with no argument.  If you use a device name as  the argument,
it types the number of the  job using the device.  (If the  device is
not in use, it says so.) The argument can be a name of the  form DDn,
to find out who is using  Data Disc channel n.  You will be  told the
TTY line number,  if any, as  well as the  job number.  Also,  if the
argument  is  a  UDP,  the  command  may  type  out  UDP1  PUBLIC  if
applicable, and will type a job number only if that job  has assigned
the drive as PRIVATE or OLD.

The PPPN command prints out the logged in PPN and the alias,  if any,
for  your  own  job (no  argument)  or  the job  number  you  give as
argument.

The PTTY command prints out  the terminal line number of your  own or
another job.   If the  terminal is a  Data Disc,  it also  prints the
channel number.  The TIME  command, which also takes an  optional job
number argument, types out five quantities for the specified job; the
first four are times,  in hours:minutes:seconds'ticks (a tick  is one
sixtieth of a second):
4.6                                          System Information    40


  TOTAL    is the total run time for the job.
  INCREMENTis the run time since a TIME command for this job was
           given by the job itself.  That is, the INCREMENT time
           is reset when you give a TIME command for your own job,
           but not when you give one for another job.
  XTIME    is the same as the XTIME displayed on the WHO line--it is
           reset whenever the job is started by a command other than
           CONTINUE, and whenever the program is returned to the RUN
           queue after waiting for terminal input.  This meaning of
           XTIME can be changed; see page 24 for a complete
           discussion of XTIME.
  WAIT     is the time the job has waited for the system, including
           time in RUNQ and disk I/O wait, but not tty I/O wait,
           STOP, etc.  It is a measure of the quality of service
           the job is getting.
  KCS      (kilo-core-seconds) is  a measure of the demands
           the job has made on the system.  It is incremented by the
           job's core size (in K) every second of runtime.

The command TIME 0 types  the time since the last system  reload, the
percentage of that time  spent in core shuffling, and  the percentage
spent running the  null job (what the  system does when there  are no
real jobs it can run).  It also types some extra information  for the
benefit of system wizards,  which varies with their interests  at the
moment and is generally not meaningful to users, e.g., the percentage
of time spent in the monitor at interrupt level.

The DAYTIME  command with no  argument types the  current day  of the
week, date, and time.  With a job number argument, it types  the time
that job logged in, the time  it was last run, and the  current time.
DAYTIME 0 specifies your own job. If the job has been logged in since
the previous day, dates (day  of the month) are typed along  with the
three times.

The RESOURCES command lists the available system resources:  it types
the number of  free tracks on  the file disk,  and the names  of free
devices (mag tape, etc.) other than the disk, IMP, and  terminals.  A
separate line is  typed for each UDP  drive (currently there  is only
one) unless the drive is  detached from the system or being  used for
swapping.  The  line contains just  the device name  if the  drive is
free; otherwise it indicates whether it is PUBLIC or PRIVATE;  if the
drive has a  file-structured pack mounted,  its name (volume  ID) and
the number of free  tracks, as for the  DSK device, will be  typed if
known  to the  monitor.  (That  is,  the name  will be  typed  if any
input/output operation  has actually happened  on that pack  since it
was mounted.)

The FILES command lists disk files in use by a job, with  some status
information.  It  can take a  job number argument  (0 means  your own
4.6                                          System Information    41


job), in which  case all files  in use by that  job are listed,  or a
filename argument, in which case the status of the specified  file is
displayed (if it is being used by any job).  Each line typed  by this
command  contains the  job  number of  the  job using  the  file; the
filename, extension,  and directory  ppn of the  file; the  number of
records in the file; the number of the record currently being read or
written; and the way the file is being used: R for read, W for write,
or RA for  read-alter, possibly followed  by E for  end-of-file seen.
The letter U indicates that the file is on a UDP.  The  FILES command
with no  argument is normally  equivalent to FILES  0; however,  if a
FILES command results  in more information to  type than fits  in the
output buffer, the  command lists as much  as will fit followed  by a
line with  an ellipsis (...),  and a FILES  command with  no argument
will continue the list from that point.

The  HELLO command  types  the name  of  the current  version  of the
monitor.

All of the above commands are legal when you are not logged  in.  The
following one is not.

The SLEVEL command types out your current service  level reservation.
The  service  level   system  attempts  to  guarantee   the  reserved
percentage  of  the  computer's time  to  programmers  who  make such
reservations.  See the RSL command, in Appendix 6.



                     4.7  Miscellaneous Commands


The TTY command can be used to change several characteristics of your
terminal.  It  takes as  argument a keyword  specifying the  thing to
change.  As in  typing monitor commands,  only enough letters  of the
keyword as necessary  to make it unique  need be typed.   The keyword
may be preceded  by NO or -  to reset the corresponding  switch.  The
keywords are
4.7                                      Miscellaneous Commands    42


  TABS     declares that the terminal has hardware tabs, so the
           monitor will not convert tabs to spaces on output.
  ECHO     tells the monitor to send back to the terminal the
           characters you type in.
  FILL     tells the monitor to insert extra carriage returns when a
           return is typed out at the terminal, to give the carriage
           time to return to the left margin.  This is used mainly
           for 30 character per second terminals.
  FULL     declares that the terminal has lower case letters, so
           lower case should not be changed to upper case on output.
           Equivalent to ESC F on a display; NO FULL is like BREAK F.
  UPDATE   enables automatic resetting of XTIME, like ESC X from a
           display.  NO UPDATE is like BREAK X.
  TIME     resets XTIME and stops automatic resetting, like ESC 1 X.
           NO TIME, like BREAK 1 X, sets XTIME to the total run time.
  WHO      types out your job's WHO line.  "TTY WHO n" will type out
           the WHO line for job n; "TTY WHO 0" or "TTY -WHO" types
           out the system WHO line.

The  TABS,  ECHO,  and  FILL  keywords  have  no  effect  at  display
terminals.  You need not be logged in to give the TTY command, except
for the UPDATE and TIME functions.

The ALIAS command is  used to set your  job's disk PPN or  alias.  If
you  have an  alias, all  disk references  by your  job which  do not
include an explicit PPN will use the alias directory rather than your
logged-in  PPN directory.   The argument  can be  PRJ,PRG to  set the
alias to that PPN, or just PRJ to use your own programmer name in the
alias.  No argument resets your alias to zero, so your  logged-in PPN
will be used  for disk files.  If  you have an alias,  your logged-in
PPN is still checked for file protection purposes.

The TALK command can be used  to talk to a user at  another terminal.
It takes a device name  as argument.  The device must be  a terminal,
which must be in monitor mode and must not have any characters in its
input buffer.   (Device CTY,  the PDP-10  console Teletype,  is never
busy; TALK CTY always  succeeds.  Note to  remote users: There  is no
operator  on  this  system;  TALK CTY  is  not  a  good  way  to  get
assistance!)  If  the command succeeds,  all characters you  type are
typed out on the other terminal, and vice versa.  If the terminal you
specify was already in  a talk ring, you  are added to the  ring; all
characters  typed at  any  terminal in  the  ring appear  on  all the
others.  You  leave the talk  ring by typing  CALL.  You need  not be
logged in to enter a talk ring.

The KILL command can be used to kill another job with your programmer
name.  It takes the job number as its argument.
5.                                      System Program Commands    43


                              SECTION 5

                       SYSTEM PROGRAM COMMANDS




The remaining monitor commands all run particular system  programs in
your core image.  There are a few main groups of these commands and a
few miscellaneous ones.  These commands are documented along with the
programs they  run.  The next  two sections are  about the  LOGIN and
LOGOUT programs and the  commands which run them; these  were briefly
introduced earlier.  The major command groups are then presented, and
finally the miscellaneous system programs.  Many system  programs are
not run  by special monitor  commands, but by  the R  command.  Those
programs are not documented here, but in separate manuals.



                             5.1  LOGIN


The LOGIN command is used  to begin a session of using  the computer.
It runs the LOGIN  program, which provides several  optional services
as well as setting up the necessary system tables for your job.

The LOGIN  command may be  abbreviated L.  It  takes one  argument, a
project-programmer name.  Different  characters used between  the two
parts of the name are used for different options:

  PRJ,PRG  types all system messages and processes OPTION.TXT
           (see below)
  PRJ/PRG  types system messages new since last login, processes
           OPTION.TXT
  PRJ.PRG  types no messages, ignores OPTION.TXT; for fast login
  PRJ%PRG  sets new password, as explained below, then acts
           like PRJ,PRG

System messages are notices for all users, sent by the MAIL * command
and stored in the  file NOTICE.TXT[2,2].  There may also  be messages
addressed to a particular project, to a particular programmer,  or to
a PPN.  Mail  to your project is  treated like system  messages.  The
handling of programmer or PPN mail is explained below.

It  is  possible to  set  a  password and  file  protection  codes to
restrict access to a particular PPN.  If the PPN you specify to LOGIN
has a password, LOGIN types  Password= and you must type  the correct
password to log in.  Echoing of input characters is turned off so the
password does  not print.   Passwords may  be one  to six  letters or
5.1                                                       LOGIN    44


digits  followed  by  RETURN.   To  protect  files  from unauthorized
access, there is  a protection code  associated with each  file.  The
code specifies the access allowed to the file for its owner  (i.e., a
user logged  in under the  file's PPN), for  other authorized  AI Lab
users, and for guest users who are logged in remotely (from  the ARPA
network, dial-up telephone lines, or campus terminals).  You  can set
the protection code for a  file using the COPY program  (see Appendix
2).  However, you  must use the LOGIN  program to set  the protection
code of your file  directory itself, and the default  protection code
which  is assigned  to new  files created  in your  directory  if the
program writing the file does not specify a value explicitly.  If you
use % as the delimiter between the project and programmer  names when
you  log in,  LOGIN  will give  you  the opportunity  to  change your
password, the file  directory protection, and the  default protection
for new files.  The protection codes are entered as three-digit octal
numbers, with the following meanings:

  Bit      Meaning in directory protection code

  400      password is for remote logins only (see below)
  200      unused
  100      owner may not write files
  040      local users may not change protection of files
  020      local users may not read directory or any files
  010      local users may not write any files
  004      guest users may not change protection of files
  002      guest users may not read directory or any files
  001      guest users may not write any files

  Bit      Meaning in file protection code

  400      don't dump this file (see DART, Appendix 5)
  200      delete protect (see COPY, Appendix 2)
  100      owner may not overwrite this file
  040      local users may not change protection of this file
  020      local users may not read this file
  010      local users may not overwrite this file
  004      guest users may not change protection of this file
  002      guest users may not read this file
  001      guest users may not overwrite this file

If the 400 bit is on in the protection code for a file directory, the
password associated  with that area  is used only  for logins  from a
remote site;  no password will  be required for  local login  on that
PPN.   Except for  the special  NET,GUE guest  account  (see below)*,

------
*  At the  present time  the NET,GUE  account has  been discontinued,
because it  was using  too much  computer time.   People who  are not
authorized users cannot log in remotely.  A few monitor  commands are
5.1                                                       LOGIN    45


remote login is not allowed on a PPN which does not have  a password;
thus, if you want  to be able to log  in remotely but do not  want to
have to type a password for  local login, you can set the 400  bit in
your directory's protection  code.  Remote users without  accounts on
the system can log in as NET,GUE (network guest) without  a password.
(Instead, if you log in as NET,GUE you will be asked to type  in your
name.  Any name you give is accepted and stored to identify  your job
as long  as you remain  logged in; the  FINGER command (see  page 57)
will type the name  you give to identify  you to other users.)  It is
possible  to  set  up special  guest  accounts  without  the password
requirement  for use  by specific  AI Lab  project groups;  consult a
system programmer for more information on this.

Users with  access to local  terminals who sometimes  need to  log in
remotely can set a password (with %) for their own PPNs; remote users
who want  to establish accounts  here should communicate  with Lester
Earnest.  (Type  the command  MAIL LES.) Sometimes  you may  find the
system is in maintenance mode, which means that the monitor  is being
debugged and the system is not available for normal use.  If  you try
to  log in  at such  a time  you will  be asked  for  the maintenance
password.

The further  details of  LOGIN's operation are  controlled by  a file
named OPTION.TXT which you may  have in your directory.  If  there is
one, it is searched for a line of the form

LOGIN:opt1,opt2,opt3;comments

where opt1...opt3 are the desired options.  Spaces may be used in the
obvious places.   Only the first  six letters of  an option  name are
read.  Upper or  lower case is ok.   Several other programs  use this
OPTION.TXT  file,  looking for  their  own option  lines.   The LOGIN
options are as follows:













------
allowed  without  login,  as  mentioned  in  the  individual  command
descriptions.   The special  guest account  capability  still exists,
however, as does the file protection mechanism.
5.1                                                       LOGIN    46


  ME       Tells you your fortune.
  MESSAG   Types your mail without asking; see below.
  LOGRUN   Runs the LOGRUN program, which executes monitor commands
           from a LOGRUN entry in OPTION.TXT; see below for details.
  INIT     Runs the file INIT.DMP in your directory after login.
           Doesn't work if you also have LOGRUN.
  WHO      Starts a WHO line automatically if you are at a display
           terminal, as if you had typed ESC W.
  UNHIDE   Makes your Data Disc channel public, like BREAK H.
  FULL     If you are at a Teletype, sets the full character set mode
           switch.  Equivalent to TTY FULL.
  TABS     If you are at a Teletype, clears the tab expand bit; tabs
           will not be converted to spaces on output.  Like TTY TABS.
  FILL     If you are at a Teletype, sets the fill switch to insert
           extra carriage returns on output to give the carriage time
           to get all the way back.  Like TTY FILL.
  DIGEST   Tells you if there is a new Associated Press news digest
           that came in after the last time you logged in and asks
           you if it should type it out.
  PORNO    Try it and see.  Doesn't work if you have LOGRUN or INIT.
  NOMAIL   Avoids being asked questions about message files.  This is
           for people who like to type ahead while LOGIN is running.
           The exact effect depends on what other options are used;
           see below.
  AUDIO=n  Selects audio switch input channel n to your speaker if
           you are at a display terminal.  "n" is an octal number.
           "AUDIO=-n" inhibits telephone paging interrupts,
           like BREAK n U.

If there is  a message addressed to  your programmer name or  to your
PPN, LOGIN normally types

THERE'S A NOTE FOR prg                  (or prjprg)
READ IT NOW?

If you type Y, the message file is printed, and you are asked  if you
want to delete it.  (You can  also type R, which will treat  the mail
like a system  message file, i.e.,  LOGIN doesn't type  header lines,
and if you used a slash  in the command it only types  messages which
came since you last logged in.   In this case it does not ask  if you
want to delete the file.)  Note: Mail is normally sent  to programmer
names,  not  PPNs.   Some  people  send  PPN  mail  to  themselves as
reminders.

If you have the MESSAG option but not the NOMAIL option, then mail is
always typed out without asking  first.  If you have both  MESSAG and
NOMAIL, the mail is typed but you are not given the chance  to delete
it.  If you  have NOMAIL alone, you  get the THERE'S A  NOTE...  line
but not  the mail itself.   (See the RCV  command for another  way to
process your mail.)
5.1                                                       LOGIN    47


If you have DIGEST and NOMAIL, you are notified of a new A.P.  digest
but it is not typed out.  (RCV will also do this for you.) It is also
possible to  get automatic notification  of incoming news  stories on
particular topics  from the  NS program;  these messages  are treated
like programmer mail with respect to MESSAG and NOMAIL.

The LOGRUN program looks for a line in your OPTION.TXT  file starting
with LOGRUN:.  It then takes that line, and all following lines until
a semicolon is seen, and makes them be executed as if you  typed them
in.  (The semicolon is required.)



                             5.2  LOGOUT


The command for terminating a  session on the computer is  KJOB (kill
job), which runs the LOGOUT program.  The command may  be abbreviated
K.  It takes an  optional switch argument to select  various optional
features.   The  OPTION.TXT  file  is  also  used  to  control logout
options.

The LOGOUT  program normally  types out  several lines  of accounting
information,  e.g., computer  time used.   If you  are not  logged in
elsewhere, it deletes any files in your directory with  extension RPG
(these are the files the RPG system uses to remember the commands you
gave), and if  there are no files  in your directory, it  deletes the
directory itself.

If  you have  the RPGSAV  option (see  below), LOGOUT  will  look for
TMPCOR  files  (simulated  files  in  core  storage)  used   by  some
processors for  remembering RPG commands  instead of disk  files, and
copy them to the  disk so they will  be remembered the next  time you
log in.  Note  that this will  not be done if  you use the  /F switch
(below) for fast logout.  Note also that LOGOUT does not  save TMPCOR
files created under an alias, even if you are still aliased  when you
give the  KJOB command.  (The  monitor resets your  disk PPN  to your
logged-in PPN before running LOGOUT.)

You are told if you have another job logged in with the same PPN, and
if you  have assigned any  private devices (mag  tape, etc.)  you are
reminded to unload them.

This normal  processing can  be affected by  switches in  the command
itself or by options in the OPTION.TXT file.  LOGOUT looks for a line
in OPTION.TXT of the form

LOGOUT:RPGSAV,ME,FAST;
5.2                                                      LOGOUT    48


(Of course,  you need  not use  all the  options.) These  options, if
found, have the following effect:

  RPGSAV   Don't delete RPG files.
  ME       Type a friendly message (try it).
  FAST     Just log out, don't delete anything,
           don't save TMPCOR, don't print statistics.

Switches are single letters  preceded by a slash (e.g.,  KJOB/F). The
switches are:

  /K       Kill RPG files (only necessary with the RPGSAV option.)
  /S       Save RPG files.
  /M       Type a message, like the ME option.
  /F       Fast logout.
  /Z       Zero the disk.  Deletes all your files, after asking if
           you really mean it.

There are two  functions of LOGOUT which  are performed when  you are
not logged in elsewhere, regardless of options or switches  used: the
"creation date" entry for  your file directory is updated  to reflect
your most recent logout (this information is used by FINGER),  and if
you have a file named LOGOUT.MSG, it is typed and deleted.

There are two  other monitor commands  which run the  LOGOUT program,
for logging in with another PPN, and for attaching to an existing job
(see the ATTACH command, Section 4.4.) They are

KLOG logout-switches ppn
KATTACH jobnum ppn logout-switches

The logout switches are as described above.  The other  arguments are
in the required form for the LOGIN and ATTACH commands.

Finally, there is a LOGOUT command, which is exactly the same as KJOB
but no arguments are allowed.

Any of these commands,  when typed at a PTY  which is not owned  by a
TELNET server (that is, not  the virtual terminal of an  ARPA network
user), simply kills the job without running the LOGOUT program.  This
has approximately the effect of KJOB/F.



                              5.3  RPG


The  RPG commands  have  already been  mentioned.  They  run  the RPG
program, which then runs various other system programs.  The commands
5.3                                                         RPG    49


are divided into two basic groups.  The first, for text file editing,
take a file specifier as argument:

  CTV      create a file with TV
  TV       edit a file with TV
  CREATE   create a file with SOS
  EDIT     edit a file with SOS
  MAKE     create a file with TECO
  TECO     edit a file with TECO

The other major editor, E,  includes the necessary code to  carry out
the RPG  functions itself, e.g.,  default extensions  and remembering
the commands.   The following commands  are, therefore,  not strictly
RPG commands but function equivalently:

  CETV     create a file with E
  ETV      edit a file with E
  READ     edit with E in book mode

The second group, for  program compilation, take one or  more program
names, along with various option switches:

  COMPILE  compile programs
  LOAD     compile and load programs
  EXECUTE  compile, load, and run programs
  PREPARE  compile and load with a debugger
  DEBUG    compile, load with a debugger, and start the debugger
  TRY      compile, load with a debugger, and start the program

  PUB      produce a document with the PUB Document Compiler

Finally, one more command, used in conjunction with  the compile-type
commands, which takes no arguments:

  CREF     produce cross-reference listings from compilations

The complete description of  these commands, with the  command syntax
and the processing options provided, is included as Appendix 1.



                         5.4  COPY and SPOOL


The  next  major group  of  commands runs  the  COPY  program.  Their
arguments are generally in the form "new-file ← old-file":

  COPY     copy a file
  TRANSFER copy and delete the original
  RENAME   rename a file or change protection
5.4                                              COPY and SPOOL    50


The following COPY commands imply a destination, and take just one or
more  input file  specifications (separated  by commas  if  more than
one):

  DELETE   delete a file
  TYPE     copy to the terminal
  LIST     copy to the line printer (SPOOL, below, is preferred)
  PRINT    copy to the line printer, different format options
  XGPLIST  copy to the Xerox Graphics Printer (XSPOOL is preferred)
  DIRECTORYtype file directory

The COPY  manual explains  these commands  fully, along  with various
options specified in the argument list; see Appendix 2.

Since only  one job can  use the line  printer or XGP  at a  time, if
several people want  to make listings at  once there is  a scheduling
problem.  To  solve this,  the system allows  listing requests  to be
stored  on  disk, and  processed  one  at a  time  by  spoolers which
actually  control the  LPT  and XGP.   The system  commands  for this
function are:

  SPOOL    request line printer listing of specified file(s)
  XSPOOL   request XGP listing of specified file(s)
  UNSPOOL  delete a spooler request
  QSPOOL   type out spooler status and queues

The SPOOL commands also allow editing options to be specified  in the
argument list; see Appendix 3 for details.

The  commands in  this section  all require  that you  be  logged in,
except for TYPE, DIRECTORY, and QSPOOL.
5.5                                                        MAIL    51


                              5.5  MAIL


Several commands  are provided for  sending messages to  other users.
Messages can be filed on disk, so that the addressee will be notified
about them by LOGIN, or they can be sent directly to the  terminal of
a logged-in user.  There  is also an automatic reminder  system which
allows delayed messages.  The commands for processing messages are:

  MAIL     send a message to a user's message file
  SEND     send a message to a user's terminal
  REMIND   request a delayed message
  GRIPE    send a message complaining about a system problem
  PLAN     create plan file for FINGER (see page 57)
  RCV      edit message files
  LATER    request delayed execution of a program
  CANCEL   delete REMIND or LATER requests

The usual format of the MAIL and SEND commands is

MAIL user message
SEND user message

where user  is a  programmer name and  message is  the text  you want
sent.   If you  do not  include a  message in  the command,  the MAIL
program will ask you to type a message, which may then have more than
one line.  The complete description of these commands is  in Appendix
4.

The commands in  this section require that  you be logged  in, except
for MAIL, SEND, GRIPE, and RCV.



                              5.6  DART


DART is  a program to  save disk files  on magnetic tape  and restore
them as needed.  It also handles mag tape positioning  commands.  The
file dumping commands take disk file names as arguments:

  DUMP     dump disk files onto tape
  RESTORE  restore files from tape to disk
  LOCATE   find which tape has dumped copy of files
  TLIST    list all files on a tape

The tape positioning commands are:
5.6                                                        DART    52


  REWIND
  ADVANCE
  BACKSPACE
  EOT

The  complete documentation  of these  commands is  in Appendix  5 of
this manual.



                               5.7  DO


The DO program allows automatic execution of an arbitrary sequence of
commands.   By  writing  DO  command files,  you  can  make  your own
sequences    of   program    execution   analogous    to    the   RPG
compiler-loader-execution  sequence.   The DO  command  takes  a file
specifier as argument.   The text in  the file is  simply transferred
into your terminal's input buffer, as if you had typed it.   Then the
DO program  exits, and  the monitor processes  the commands  from the
file.  The DO program cannot be run by detached jobs.  The  amount of
text allowed in the DO file is limited by the capacity of  your input
buffer.

DO does some conversion of  certain characters in the file,  to allow
things like  CONTROL and META  characters.  The characters  which are
processed specially are:

  RETURN   ignored
  LINE     ignored
  ↔        translated to RETURN (the monitor will supply a LINE also)
  ↓        translated to LINE
  ≠        translated to ALT
  β        translated to deferred CALL
  VT       adds CONTROL bit to the following character
  FORM     adds META bit to the following character
  ⊗        translated to ESC
  ⊗-       translated to BREAK
  |        separates different DO functions (see below)
  ≡        quote the next character (do not process it specially)
  ?        takes the next character (other than RETURN or LINE) as a
           variable name.  Suppose the character is A (i.e., ?A).  If
           this is the first occurrence of ?A in the file, DO types
           "A=    " and waits for you to type in a text string ending
           with RETURN; the string is substituted for each occurrence
           of ?A in the file.

To allow  more than one  DO function  to be stored  in the  same file
(because  small  files  are inefficient  in  using  disk  space), the
vertical bar (|) character can be used as a separator.  The command
5.7                                                          DO    53


DO DOFILE(3)

will DO the commands between the second and third | characters in the
file.

The DO command remembers its argument in an RPG file, so you can type
DO without an argument to repeat the same command file.  Also, the DO
command is remembered  as if it were  a COMPILE-type RPG  command, so
the RPG exit mode commands  in the text editors will also  repeat the
DO  command.   Thus,  users  of languages  like  LISP  which  are not
recognized by RPG can  write DO files to  run LISP and read  in their
program.



                              5.8  ZERO


The ZERO command  is used to initialize  file directories on  disk or
DECtape.  The  command takes  a device name  as argument;  the device
must be DSK, DTAn, or UDP (user disk pack).

For DECtape,  ZERO simply  executes the UTPCLR  UUO, which  tells the
monitor to  initialize the  file directory for  the DECtape  unit you
specified.  Make sure  you don't get the  wrong unit number  and zero
someone else's DECtape!

If you specify  device DSK, you must  confirm (by typing Y)  that you
want to delete all the  files in your disk area.  ZERO  then attempts
to delete  each file  in your  area.  For  each file,  it types  # if
successful, otherwise a message indicating the reason for the failure
(write protected, etc.).

The ZERO program is not  used for new format (file  structured) UDPs.
It can be used to change the password of an old format UDP,  and also
allows  the  initialization  on  such a  UDP  of  the  file structure
formerly  used by  the  COPY program,  although this  feature  is now
obsolete.  The UDPUFD command (see page 59) is used to  set passwords
and create file directories on new format UDPs.



                              5.9  WHO


The WHO command (abbreviated W) runs the WHO program,  which displays
system status information at your terminal.  If you are at  a display
terminal, the  information is  automatically updated  as long  as the
program continues to run.  If you are at a Teletype,  the information
5.9                                                         WHO    54


is only  typed once.  The  WHO command does  not require that  you be
logged in.

The  first part  of the  WHO display  is a  list of  the jobs  on the
system,  with  various  information about  each  job.   This  list is
divided into two sections, for jobs belonging to users and for system
phantom  jobs.  (More  precisely,  the second  section  contains jobs
which are detached and have the JLOG bit off in the job  status word,
i.e.,  are not  logged in.)   Jobs attached  to  pseudo-teletypes are
listed under the  controlling job, with  the line for  the controlled
job indented.  The listing for each job has several parts:

  JOB      job number
  QUEUE    queue name, as in the WHO line, with possibly an extra
           character meaning one of several states (if more than one
           applies, the one listed first below is displayed):
           -  the job is now actually running
           ⊗  the job is locked in core
           →  the job is an upper segment, next t be swapped in
           ↑  the job is next in line to be swapped out
           ↓  the job is next in line to be swapped in
           *  the job is swapped out
           ↔  the job is next in line to be moved in core
  PPN      the job's logged-in PPN
           (This will be 100100 for not-logged-in WHOs, etc.)
  LINE     the job's terminal line number, or DET for detached jobs
  JOBNAM   the job name
  SIZE     the job's core image size in K (1024-word blocks)
  TIME     the job's total run time since login
  PL       percentage of CPU time spent on this job recently
  SL       service level reservation for this programmer
  SEG      job number of this job's upper segment
  SW10     number of ticks between startups of job's PDP-10
           spacewar module
  SW6      number of ticks between startups of job's PDP-6
           spacewar module

After the  job display  comes a similar  display for  upper segments,
containing the job  number, job name, core  size, and number  of jobs
using the segment.

The  next part  of the  WHO display  is a  summary of  overall system
statistics.   This  includes  the  time  since  the  system  was last
restarted (UPTIME); short and  long term time spent running  the null
job (NULTIMES); short and long  term time spent running the  null job
when another job wanted to be run but wasn't in core  (WASTED); total
user core  image sizes in  core and swapped  out (CORE);  the largest
contiguous free block of core, the total available user core not used
by locked-in jobs,  and the total  available user core  (USABLE); the
5.9                                                         WHO    55


number of  jobs in  RUNQ and TQ  and their  combined core  image size
(RUNNING JOBS); and the total service level reservation for logged-in
users (TOTAL SLEVEL).

The final section of the WHO display is a list of all I/O  devices in
use by programs or assigned by  jobs.  For each such use of  a device
(at  most  one  per  device except  for  DSK),  a  line  is displayed
containing the logical name, if any; the physical name; the character
"#" if the device was assigned by the ASSIGN command; the  job number
using  the device;  if  a particular  file  is open,  the  file name,
extension, and directory ppn (for disk files), the number  of records
in the  file, the  record currently  being read  or written,  and the
read/write  status.  This  last will  be W  if the  file is  open for
output, R for input, or RA for read/alter mode, followed by E  if the
end of file has been read.  Note: if the file has been  closed, there
may  be  no  mode  flag,  and  a  large  number  like  1101   in  the
current-record position.  Record numbers are displayed in octal.

On display  terminals, only  a part of  this display  can fit  on the
screen at any  time.  Single-character commands  can be typed  to WHO
which provide "scrolling" of the display as well as  other functions.
The following commands are understood:

  ↓        scroll down 1/2 screen size
  ↑        scroll up 1/2 screen size
  ∞        run forever (otherwise WHO exits after nothing has been
           typed in for two minutes)
  R        only display jobs which have recently been Running
           (not in NULQ, STOP, IOWQ, or INTW)
  M        only display My jobs (login or alias programmer name must
           agree with user's login or alias programmer name)
  N        restore Normal display (all jobs)
  E        Exit, leaving information displayed on the screen and with
           the page printer set up to avoid erasing it
  1-9      repeat argument for ↓ or ↑

Any other character will make WHO restore the page printer  to normal
and exit.

From a non-display  terminal only, the  command WHO/Q will  type only
the PPN  and TTY for  each job which  is not detached.   ARPA network
users are listed separately.  This is intended for Quick typeout.



                             5.10  FIND


The FIND command is used to locate information in a file by searching
5.10                                                       FIND    56


for a keyword and typing  out the "paragraph" in the  file containing
the key.  The main use of this program is to look people up in the AI
Lab telephone directory.  FIND may be run without logging in first.

The  syntax of  the  FIND command  has the  following  form (brackets
denote optional things):

FIND [EXACTLY] key [ [IN] [file]]

If file=PHONE or is omitted entirely, the AI Lab  telephone directory
is read.  Otherwise, the specified file is read.

If a key contains any spaces  or tabs, it must be separated  from the
file name (if present) with the word IN, or delimited by " characters
or the  quote pair ` ... '.   A `  or ' character  may appear  in the
former, and a "  may appear in the  latter.  If the number  of spaces
and tabs in the key is significant (in EXACTLY mode), the quoted form
must be used.  See the examples.

The file is logically divided into paragraphs.  A  paragraph consists
of twenty  or fewer  consecutive non-blank lines  on one  page.  FIND
searches  the  file  for  paragraphs  that  contain  the  key.   Each
paragraph containing the  key is a hit  and is typed out.   Also, the
hits are counted and the count is printed at the end.

The EXACTLY qualification causes  FIND to search for an  exact match.
Otherwise it performs a  template match. A template  match recognizes
two  special  symbols in  the  key: space  (one  or  more consecutive
spaces) and ellipsis  (three or more  consecutive dots).  A  space in
the key matches  zero or more spaces,  tabs, and carriage  returns in
the paragraph.  An ellipsis in the key matches zero or more arbitrary
characters in the paragraph. Furthermore, in a template  match, upper
and lower case letters  are equated.  The EXACTLY search  is somewhat
quicker.

Examples:

FIND john...lathrop<cr>

*McCarthy, John (Prof. John)             208       P[MTC*,JMC] 2 800
*       846 Lathrop Dr., Stanford, (9) 321-7580

1 HIT ON KEY = john...lathrop

FIND BRIAN HARVEY
        will look up "BRIAN HARVEY" in the phone directory unless you
        have a file named HARVEY, in which case it looks up "BRIAN"
        in HARVEY.

FIND BRIAN K. HARVEY
5.10                                                       FIND    57


        always looks up "BRIAN K. HARVEY" in the phone directory.

FIND `BRIAN K.' HARVEY
        or
FIND BRIAN K. IN HARVEY
        looks up "BRIAN K." in HARVEY.

FIND BRIAN IN
        looks up "BRIAN IN" in the phone directory unless you have a
        file named IN, in which case it looks up "BRIAN" in IN.



               5.11  Other System Information Programs


This section describes other commands which run information programs.
All of them are allowed to be run without logging in.

The  WHERE command  types  out information  similar to  WHO  for jobs
belonging to a particular user.  It takes a PPN or programmer name as
argument,  and for  each job  whose login  or alias  PPN  matches the
argument types out the job  number, PPN, job name, core  size, queue,
total run time, actual time when the job was last run,  terminal, and
alias if any.  (The terminal is listed by type and unit number, e.g.,
TTY5, III23, DD56, PTY121.   Note that these are not  actual physical
device names recognized by the system, except for TTYn.)

If you are logged in and run WHERE, you can give the  REENTER command
and type in a job name.  WHERE will then list all jobs with  that job
name.

The  FINGER  command  also  lists  jobs  belonging  to  a  particular
programmer, but  provides different information:  the job  number and
job name, the  programmer name, the real  name of that  programmer if
known to  the system, the  number of minutes  since the job  was last
run, the  terminal number  (and type,  as in  WHERE), and  the actual
location  of the  terminal (room  number, if  in the  lab,  and whose
office it is).  FINGER with no arguments displays all jobs  which are
logged in.  If the programmer specified as the argument to  FINGER is
not  logged in,  the program  types  the date  and time  of  his last
logout.  Also, if he has created a plan file (with the  PLAN command,
Appendix 4)  it is typed.   FINGER will accept  human being  names as
argument instead of programmer names, if desired.

The  HELP  command  provides information  about  system  programs and
facilities.  It  takes as its  argument the name  of some  program or
concept, and  provides some  short description  of that  facility, if
such a description  exists.  The data for  HELP comes from  the [3,2]
5.11                          Other System Information Programs    58


directory; this data  consists mostly of  short text files  which are
typed  by HELP,  but may  also include  programs or  monitor commands
which HELP will run for you.  If no HELP is available, but there is a
longer document available in  one of the standard  documentation file
directories,  HELP will  so inform  you.  If  you type  HELP  with no
argument,  the  program  will  list  the  topics  on  which  HELP  is
available.  (Some of the HELPers which run programs rather  than just
typing  text at  you require  that you  be logged  in.  HELP LOGIN is
cleverly not among those.)

The SYSTAT command runs the  WHO program (see Section 5.9).   The old
SYSTAT program is no longer supported on this system, but the command
name was retained for compatibility with other systems.



                 5.12  Miscellaneous System Programs


The  commands  in  this section  run  miscellaneous  system programs.
Except as noted below, they require that you be logged in.

RSL runs  the RSL  program, which  is used  to reserve  service level
(i.e., better service).  The command takes no arguments.  The meaning
of service level and the use of RSL are described in Appendix 6.

The LISP command runs  the LISP interpreter.  It takes  no arguments.
Note: when the system wizards need a command table slot to patch in a
new command, LISP is the  first to go.  Therefore, it may  not always
exist.  R LISP has the same effect and always works.

The FIXIMLAC command is  used to initialize IMLAC  terminals.  (These
are terminals which are treated as Teletypes by the monitor,  but are
actually small computers with  display screens.)  With any  luck, you
will never see an IMLAC.   Just in case, the command is  explained in
Appendix 7.  This command may be given when not logged in.

The XEROX command runs the XEROX program, which does  file formatting
to produce  pretty documents.  It  has nothing to  do with  the Xerox
Graphics Printer.   XEROX has  been largely replaced  by PUB,  a more
versatile formatter.  The XEROX manual is the file XEROX.LES[UP,DOC].

The TELNET and TN commands (TN is used to abbreviate TELNET)  run the
T program, for talking to another computer on the ARPA  network.  The
site name of the computer you want to use is the argument.

The FTP command takes an ARPA site name like TELNET, but runs the FTP
program to  carry out  the File Transfer  Protocol for  copying files
between computers.
5.12                              Miscellaneous System Programs    59


Further details on T, FTP,  and the ARPA net in general  is contained
in Appendix 8 of this manual.

It  is  possible  to  establish  TELNET-like  connections  to  remote
computers by  using dial-up connections  via the  dataphones normally
used  for  incoming  dial-up lines.   Such  dataphones  are presently
associated with TTY10 and  TTY11; the dataphone on TTY11  includes an
automatic  dialing  circuit.   The  DIAL  command  will  establish an
outgoing dataphone  connection and thereafter  behave like  a TELNET.
The dial command  takes as its argument  either the device name  of a
TTY, in which case you must dial the number you want manually  on the
associated dataphone, or a telephone number in the form

{(ddd)}ddd{-}dddd

where d  represents a digit  and braces enclose  optional characters.
In the latter case,  the telephone number is dialed  automatically on
TTY11's dataphone.

The NS command runs the News Service program, which allows  access to
news stories which have  been received from the Associated  Press and
New York  Times news wires.   The HOT command  runs the  HOT program,
which types AP  or NYT stories as  they come in.  These  commands are
restricted to  local users  at the request  of the  Associated Press.
Full  documentation on  the  news service  is contained  in  the file
NS.ME[S,DOC].

The UDPUFD command runs the  UDPUFD program, which is used  to create
or delete user file  directories on file-structured user  disk packs.
The command format is UDPUFD PRJ,PRG (you must first ASSIGN the UDP).
To create a new directory, you must know the pack password; to change
or delete a directory you must know its password.  You can change the
directory's password or file protection codes with UDPUFD as  you can
for the main file disk with LOGIN (see Section 5.1).  You  can delete
a directory only if it  is empty.  This is a privileged  program, and
the command is restricted to local users (as is the UDP itself).

The  DRD  command  (not  related  to  the  Department  of  Redundancy
Department) runs the  DIRED program, for displaying  and manipulating
file  directories  at  a Stanford  display  terminal.   See  the file
DIRED.SGK[UP,DOC] for instructions.

The PARRY  command runs PARRY,  the paranoid model.   It may  be used
without being logged in.
6.                                          Privileged Commands    60


                              SECTION 6

                         PRIVILEGED COMMANDS




Certain  command  functions can  only  be used  by  privileged users.
(There are several  privileges which may  be associated with  a PPN.)
Most  privileged  functions  are  carried  out  by  programs  and are
documented with those programs, but a few monitor commands themselves
take on special meanings when  used in a privileged way.   Most users
do not require any privileges;  if you think you need to  be assigned
any, see a system programmer, who will disagree.

The DETACH command,  if given with a  device name argument by  a user
with the  DEV privilege,  makes the  specified device  unavailable to
users.  This is  intended to be  used for hardware  maintenance.  The
ATTACH command with device name argument, also privileged,  assigns a
detached device to the  job giving the command; it  becomes generally
available  when the  job deassigns  it.  These  commands  also accept
pseudo-device names  of the  form DDn,  to make  Data Disc  channel n
unavailable.

The KILL command can be used to  kill any job by a user with  the KIL
privilege.

The TALK  command is always  successful, even to  a terminal  in user
mode, if given by a user with the TLK privilege.

Privileges can be enabled or disabled at any time.  That is, for each
job,  the  monitor  remembers  the privileges  to  which  the  job is
entitled  as  well  as  the ones  which  are  presently  active.  All
privileges to which you are entitled are normally activated  when you
log in, but you may choose to disable any or all for  safety reasons.
The ENABLE and  DISABLE commands, with no  arguments, turn on  or off
all privileges to which you are entitled. These commands may  also be
used with a privilege name as argument, to enable or disable specific
privileges.  If you have  the PRI privilege, you can  enable specific
privileges  to which  you are  not entitled,  except  that privileges
which are  intended only  for specific  programs (XGP  font compiler,
service level monitor) cannot be enabled by any user.

Also, a few system programs intended for general use  require special
privileges.   Such programs  are run  by special  commands (not  R or
RUN), and any attempt to modify your core image while running  such a
program will disable the temporary privileges involved.

The EDDT command can be given only from the PDP-10  console Teletype.
6.                                          Privileged Commands    61


It stops timesharing and  starts Executive DDT to allow  debugging of
the monitor.
Appendix 1                                                  RPG    62


                             APPENDIX 1

                                 RPG




RPG,  the  Rapid Program  Generator,  is a  program  which interprets
certain  monitor  commands   for  editing,  compiling,   and  loading
programs.   It  simplifies  these  tasks  by  expanding  concise user
commands  into  the   different  forms  used  by   editors,  language
processors, and the LOADER.  Without user intervention, RPG  will run
the correct  language processors to  translate the user's  files.  It
will run the LOADER to create an executable core image containing the
user's program.  The monitor provides several commands that run RPG.

This appendix is excerpted from  the RPG manual, SAILON 51.1,  on the
disk  as RPG.REG[S,DOC].   It  does not  include the  section  on the
internal workings of RPG.

RPG knows about certain standard processors.  These are  the editors:
TV, SOS, and  TECO; the compilers:  SAIL, FAIL, F4  (FORTRAN), MACRO,
OSAIL (Old SAIL), NSAIL (New SAIL), and PUB (Document  Compiler); the
debuggers: RAID and DDT; and the LOADER.

The  E editor  includes within  it the  RPG functions,  so  its "RPG"
commands  run   E  directly   rather  than   via  the   RPG  program.
Nevertheless,  the  E commands  are  included here  because  they are
operationally similar.

The RPG commands are  divided into three classes, EDIT,  COMPILE, and
CREF.



                         EDIT-Class Commands


There  are  eight  EDIT-class  commands, two  for  each  of  the four
commonly used editors:

                                      Command Name
          Program            Create File    Edit File

          SOS                CREATE         EDIT
          E                  CETV           ETV
          TV                 CTV            TV
          TECO               MAKE           TECO

CREATE, CTV and MAKE
Appendix 1                                                  RPG    63


These commands take a file  name as the argument.  RPG will  call the
editor and tell it to initialize the file of that name.   For CREATE,
SOS is started in line insertion mode.  The TV editor will initialize
the file and allow the insertion  of text on page 2.  TECO  (the MAKE
command) will be initialized to write on the specified file.

EDIT, TV and TECO

These  commands take  a file  name (with  optional project-programmer
name) as the argument.  RPG remembers the name of the last  file that
was edited (except that  LOGOUT makes RPG forget).  If  an EDIT-class
command is given without an argument, RPG will use the  argument that
it remembered.

If no  extension is specified  in the argument  and no file  with the
given  name  and  blank  extension  can  be  found,  then  the user's
directory is  searched for any  file with the  given name and  one of
several standard extensions.  The standard extensions are searched in
the order: NSA, OSA, SAI, FAI, MAC, F4, LST, WRU, PUB, and CMD.

If a user specifies a disk area other than his own current (logged in
or aliased) area, then the edited  file will be put on his  disk area
and the source (from the other area) will not be changed.

The editors have a read-only  mode in which files may be  examined by
using editor commands, but  not changed.  To get read-only  mode type
/R  after  the file  name  in the  edit  command  (e.g., TV M.SAI/R).
Read-only mode in  SOS prohibits any  commands that would  change the
file.  In the display editors, the mode may be changed from read-only
to read-write  at any  time.  In  TV, there  is a  no-directory mode,
specified by the switch /N.

CETV and ETV

These are the create and edit commands for the E editor.  They do not
run the RPG program;  instead, E itself simulates the  RPG functions.
There  are several  differences between  these and  the  other editor
commands:

1. E saves its edit commands  not on the disk, but in a  TMPCOR file,
i.e., a simulated file kept in  core by the monitor until the  job is
logged out.  The LOGOUT program copies these files to the disk if you
use the RPGSAV option.

2. The  command can include  /nP and /nL  switches for page  and line
numbers as well as /R and /N.  E saves its position in the  file when
it exits, so a later  ETV command with no argument will  continue the
edit from the same point in the file.
Appendix 1                                                  RPG    64


3. E allows you to edit  a file in another dsk area by  including the
PPN in the command, rather than copying the file to your own  area as
RPG does for the other editors.

READ

The READ command starts E  in a special mode, called book  mode, used
to read  long files over  an extended time  period.  In this  mode, E
does several things differently from the normal editing procedure:

1.  If there is a file  with the name in the READ  command, extension
BKP, and PPN matching that  given in the command, your ALIAS  PPN, or
your login PPN (tried  in that order), it is  used as an RPG  file to
determine where to start editing the specified file.  This "bookmark"
file is not deleted by LOGOUT, so you can continue reading at a later
session.  The  file, if found,  is updated when  you exit from  E; if
there was no BKP file, one  is created on your (alias) area  when you
exit.

2.  A READ  command with no argument  uses RPG (TMPCOR) files  as ETV
does, but the  filename used is different,  so you can  alternate ETV
and READ commands for different files with no confusion.

3.  E does not allow you to modify the file when using book mode.



                       COMPILE-Class Commands


The  COMPILE-class  commands  are an  abbreviation  for  a  series of
commands to compilers (and other language processors) and the LOADER.
Here is a brief summary of the commands:

           REL file  Core Image   Debugger   Execution

COMPILE    yes
LOAD       yes       yes
PREPARE    yes       yes          yes
EXECUTE    yes       yes                     starts the user program
TRY        yes       yes          yes        starts the user program
DEBUG      yes       yes          yes        starts the debugger

PUB                                          document compilation

The COMPILE-class  commands, like  the EDIT-class  commands, remember
their argument list.  If the user does not supply explicit arguments,
RPG  uses  the  same  arguments  that  were  used  in   the  previous
COMPILE-class command.   Arguments are remembered  in the  disk files
Appendix 1                                                  RPG    65


QQSVCM.RPG  (COMPILE-class)  and QQSVED.RPG  (EDIT-class),  which are
usually deleted  by the LOGOUT  program.  RPG actually  remembers the
last  COMPILE-class command  that  had explicit  arguments;  both the
command and the arguments are remembered.  This is useful because all
the editors allow an exit-and-go  command (in SOS, the G  command; in
TV and  E, the CONTROL-X  G command; in  TECO, the EG  command).  The
exit-and-go  feature  runs  RPG  in a  special  way  which  makes RPG
re-execute the command that it remembered.

PUB, the Document Compiler, is a special case: it does  not translate
computer programs into REL files, but documents into DOC  files.  The
PUB  command  is   used  to  compile   a  PUB  document;   the  other
COMPILE-class  commands do  not recognize  PUB.  The  PUB  command is
remembered  in  a  QQSVCM.RPG  file,  like  the  other  COMPILE-class
commands.

COMPILE

The argument  should be  one or more  file descriptors,  separated by
commas.  RPG  will cause  the appropriate translator  to be  used for
each of the files.  The translator that is used is determined  by the
the extension of each file.  The standard extensions  and translators
are:

                   Extension      Translator

                   SAI            SAIL
                   F4             FORTRAN
                   FAI            FAIL
                   blank          FAIL
                   MAC            MACRO
                   OSA            OSAIL (Old SAIL)
                   NSA            NSAIL (New SAIL)

The  decision about  whether  to compile  is  made for  each  file by
comparing the source file date (and time) with the  corresponding REL
file date.  If  there is no  REL file, or if  the text file  has been
edited since the creation of the REL file, then the source  file will
be translated again.  If the  REL file is up to date,  no compilation
is done.  For example, if the files FOO.FAI, GARP.FAI, and BAZ.F4 are
to be compiled, the command: COMPILE FOO,GARP,BAZ would  be suitable.
Only  those  files that  have  changed since  the  creation  of their
corresponding REL files will be compiled.

Note that the COMPILE command does not produce a core image.   To get
an executable core image one of the other COMPILE-class commands must
be used.
Appendix 1                                                  RPG    66



LOAD

LOAD does  a COMPILE if  necessary and then  starts the  LOADER.  The
LOADER takes the REL files  that were generated by the  compilers and
combines  them into  an executable  core image.   When the  LOADER is
done, it exits to the  monitor.  This command makes a core  image but
does not start it.  If any SAIL program is loaded, the LOADER will be
instructed to request the current SAIL segment.

PREPARE

PREPARE is like LOAD, but a debugger (RAID or DDT) is loaded with the
user's program.

EXECUTE

This is  like LOAD,  but instead  of exiting,  the LOADER  starts the
program it loaded at its specified starting address.

TRY

TRY  is like  EXECUTE, but  it loads  a debugger  (RAID  at displays,
otherwise DDT)  with the  user program(s).   Execution starts  at the
program's starting address.

DEBUG

DEBUG is like TRY except that rather than starting the user's program
it starts the debugger (RAID or DDT).  The user may give  commands to
the debugger to start his program, to plant breakpoints, etc.
Appendix 1                                                  RPG    67





                Switches and Project-Programmer Names


Switches are allowed in  COMPILE-class commands by including  a slash
(/) and  the switch name,  e.g., /LIST.  Switches  allow the  user to
select options.  In  general, a switch placed  before a file  name is
sticky,  i.e., it  applies to  all the  terms that  follow.  Switches
placed  after a  file name  are not  sticky; they  apply only  to the
preceding term.

Many  switches have  inverse  switches that  undo the  effect  of the
switch.  For example, /NOLIST  is the inverse of /LIST.   The inverse
setting is the default for all switches.

A project-programmer name (PPN)  may be included with each  file name
in the command.  The PPN specifies the disk area from which  the file
is  to be  read.   The PPN,  enclosed in  square  brackets ([ and ]),
usually follows a file name; in this case the PPN applies only to the
preceding term.  If a PPN  appears before a file name, then  that PPN
is sticky  for the rest  of the command  until another sticky  PPN is
seen.

A name followed by a colon (:) is a device name (which is sticky).

Switch Function Summary

/COMPILE            Force re-compilation  without checking  the dates
                    of REL files
/CREF               Request a cross-reference listing
/DUMP               Force the LOADER to  make a DMP file of  the core
                    image
/FAIL               Use FAIL for this term
/FORTRAN            Use F4 (FORTRAN) for this term
/FORWARD            Prevent RPG from looking for this file  to decide
                    if the REL file is up to date
/LIBRARY            Force the LOADER to search this term as a library
/LIST               Request a listing file
/MACRO              Use MACRO to translate this term
/MAP                Request a LOADER map of global symbols
/NODUMP             Force  re-loading without  checking the  dates of
                    DMP files
/NOLOAD             Prevent a loading request for this term
/NOSAISEG           Load SAIL programs with the SAIL  library instead
                    of the SAIL segment
/NONSTANDARD        Specify a nonstandard processor
/NSAIL              Use NSAIL (New SAIL) to translate this term
Appendix 1                                                  RPG    68


/OSAIL              Use OSAIL (Old SAIL - 1971 version)  to translate
                    this term
/REL                Force   loading   from  the   REL   file  without
                    considering the source files
/SAIL               Use SAIL to translate this term

 Switch Names and Abbreviations

 Switch name        Abbreviation    Inverse name    Abbreviation

/COMPILE            /COM            /NOCOMPILE      /NOC
/CREF               /C              /NOLIST         /N
/DUMP               /D
/FAIL               /F
/FORTRAN            /FORT
/FORWARD            /FORW           /NOTFORWARD     /NOT
/LIBRARY            /LIB            /NOSEARCH       /NOSE
/LIST               /L              /NOLIST         /N
/MACRO              /M
/MAP
/NODUMP             /NOD
/NOLOAD             /NOLO           /LOAD           /LO
/NONSTANDARD        /NON
/NOSAISEG           /NOSA
/NSAIL              /NSA
/OSAIL              /OSA
/REL                /R
/SAIL               /S



                       Generation of REL Files


The simplest way to translate several programs is to create them with
file extensions which  define the processor to  be used; then  give a
single COMPILE command with all these names separated by commas.  (It
is usually  a bad idea  to have two  programs in  different languages
with the same file name, e.g., FOO.SAI and FOO.FAI.)

RPG does not require file extensions to be typed explicitly.  For the
command COMPILE FOO, RPG will look  for any file named FOO  and check
its extension.   If a file  FOO is  found that does  have one  of the
standard extensions, RPG will select the corresponding translator.

If a file does not have  a standard extension, RPG can be  told which
translator to use by  giving that information in the  command string.
For example, to  translate the file SINE  with the SAIL  compiler use
the command: COMPILE SINE/SAIL.  If  there is a list of  several file
Appendix 1                                                  RPG    69


names, the processor name may be used after each file name, or before
the entire list.  For example,

COMPILE FOO/SAIL,BAZ/SAIL

is the same as

COMPILE /SAIL FOO,BAZ

The command:

COMPILE /SAIL SINE,IOPACK/FAIL,TJ

would use SAIL  on SINE and  TJ, and would  use FAIL on  IOPACK.  The
default processor is initially FAIL.  Caution: if a file does  have a
standard (non-null)  extension, RPG cannot  be convinced to  use some
other processor.

Every time a switch like /FORTRAN appears in front of a file name, it
changes the normal mode.  For example,

COMPILE /SAIL SINE,COSINE, /FORTRAN TANGNT,COSEC

would cause SINE and COSINE to be translated by SAIL, and  TANGNT and
COSEC to be translated by FORTRAN.

The  compilations that  are requested  will not  take place  if there
already exists a REL file whose creation date is more recent than all
of the files used in producing that REL file.  If any source  file is
edited, it will  have its creation time  and date updated so  that it
will force  re-compilation.  A user  may force re-compilation,  if he
wishes, by including /COMPILE in the command line.  That is,

COMPILE /COMPILE FOO

will  compile the  file FOO  regardless of  its creation  date.  Date
checking can be forced  again by including /NOCOMPILE in  the command
line.   Including /REL  will cause  RPG to  forget about  looking for
source files at all and just proceed to generating a core  image from
the existing REL files.



                    Concatenation of Source Files


It  is often  desirable to  break  up a  program into  two  (or more)
separate files which  have only one END  statement at the end  of the
last file.   One reason for  breaking up a  program is because  it is
Appendix 1                                                  RPG    70


very long, and it would be inconvenient to keep and edit such a large
file.  Another reason for separating a program is to allow  a portion
of the  program text to  be shared.  Several  files can  be processed
together as one big  translation by separating their names  with plus
signs (+) rather than with commas.  For example,

COMPILE DATA+PROGRM

treats the files DATA and PROGRM  as if they were one large  file and
produces one  relocatable binary file,  PROGRM.REL.  A maximum  of 40
files may be combined in this way.  RPG will not  allow concatenation
of source files that specify inconsistent processors.

Normally, the REL  file will have  the name of  the last file  in the
command  string; it  can  be given  some  other name  by  putting the
desired name  and an  equals sign (=)  at the  front of  the argument
list, e.g.,

COMPILE FOO=SYMS+PROGRM+IOPACK

would do  one translation  as if  SYMS, PROGRM,  and IOPACK  were one
large file and produce relocatable binary output on the file FOO.REL.

Occasionally,  a header  file must  be assembled  with  several other
files, e.g.,

COMPILE ACUMS+SINE,ACUMS+COSINE,ACUMS+TANGNT

The brokets (< and >) feature allows this to be done more simply:

COMPILE ACUMS+<SINE,COSINE,TANGNT>



                     Producing Symbolic Listings


Assembly listings have  the original code as  it appears in  the file
plus  the octal  values that  the code  represents with  the relative
locations  that the  octal values  go in.   Assembly listings  can be
generated  by means  of a  /LIST or  /CREF  (cross-reference listing)
switch in the command.  The /LIST switch will produce a file with the
same name  as the REL  file and  extension LST.  Such  a file  may be
spooled  or  typed.   Note  that  COMPILE FOO/LIST  will  not compile
anything if a current FOO.REL exists.  This is another instance where
the /COMPILE  switch is useful.   The /LIST may  be used as  a sticky
switch or it may be applied to particular terms.  The  inverse switch
is /NOLIST.  (Processors other  than the assemblers may  also produce
listings.)
Appendix 1                                                  RPG    71


If  the  /CREF switch  appears,  instead of  /LIST,  it  generates an
expanded  listing   that  includes   a  list   of  all   the  symbols
(identifiers) used in the program and the line numbers on  which each
symbol  appears.  This  is called  a cross-reference  listing.  These
listing  files cannot  be printed  directly.  Instead,  they  must be
processed by the cross-reference lister program, CREF.  This  is done
by the CREF command (see page 76).  Note: not all the  processors can
produce a cross-reference listing.  Consult the appropriate manual to
find out if a given processor is capable of generating one.



                            Command Files


COMPILE-class commands are sometimes too long to fit on one  line, or
are too  complex to  be typed  correctly every  time.  To  solve this
problem, arguments can  be read from a  file.  The text  contained in
such a file is read by RPG  as if it had been typed as  the arguments
to a command.

The  command   file  may   contain  any   features  available   in  a
COMPILE-class command.  Also,  if the command is  too long to  fit on
one line of the  file, a semi-colon (;) placed  at the end of  a line
signifies that the  argument list will continue  on the next  line of
the file.

To use  a term  as a  command file write  an at  sign (@)  before the
command file name, e.g., LOAD @SYS.  The command file SYS  might look
like  the  following  file  which  is  used  to  assemble  the entire
operating system:

        %S%B SYSTEM=OUTER(XLR)+JOBDAT+ALLDAT+IMPDDB;
        +LOWCOR+PARSER+SYSINI+COMCSS+CLKSER+UUOCON+SCHEDU+CORE;
        +DSKSER+DSKINT+DTCSER+MTCSER+XGPSER+FBPACK;
        +IMPCLK+IMPREG+IMPUUO+IMPINT;
        +LPTSER+PTPSER+PTRSER+ADCSER+ELFSER+VODSER;
        +DPYSER+TTYSER+LINED+SPWSER+TVSER+ADSER+MAIL;
        +PATCH+SYSMAK+DDT+ONCE

There are  two things in  this command file  which have not  yet been
explained,  LOADER switches  (see  page 76)  and  translator switches
(see page 74).
Appendix 1                                                  RPG    72


                Generating Core Images and DMP Files


The commands EXECUTE, DEBUG, LOAD, PREPARE, and TRY each  generate an
executable core  image.  Core images  are made by  translating source
files (as in the COMPILE command) and then running the  LOADER, which
takes the REL files and produces a core image from them.

With DEBUG, PREPARE, and TRY, the LOADER is instructed to load a copy
of RAID (or DDT if the user is at a Teletype) and the  program symbol
table with the core image.

If /MAP is included in the command string, the absolute values of all
the global symbols are listed in a legible way on the file MAP.MAP.

A disk dump of the core  image can be made by including /DUMP  in the
command string.  The dump file  will have the same name as  the first
REL file  and extension DMP.   The DMP file  can be given  some other
name by putting the desired name and a left arrow (←) in  the command
string.  For example, the command

TRY DUMP←SINE,COSINE/DUMP

translates  the  programs  SINE and  COSINE,  producing  SINE.REL and
COSINE.REL.  The LOADER is  run.  Because the TRY command  requests a
debugger,  RAID.REL  (or DDT.REL)  is  loaded from  the  system area.
SINE.REL and  COSINE.REL are  loaded next.  Then  the LOADER  makes a
dump  copy of  the core  image in  the file  DUMP.DMP and  starts the
program.

If there already exists a DMP file of the right name and if it  has a
creation date more recent than those of the source files,  no loading
will  be done.   Instead, the  dump copy  itself will  be  called in.
Reloading may be  forced by the /NODUMP  switch in the  command line.
Both an equals  sign and a  left arrow may  be included in  a command
string.  For example:

 COMMAND                              REL           DMP

TRY SINE+COS/DUMP                    COS.REL       COS.DMP
TRY DUMP←SINE+COS/DUMP               COS.REL       DUMP.DMP
TRY DUMP=SINE+COS/DUMP               DUMP.REL      DUMP.DMP
TRY FOO←DUMP=SINE+COS/DUMP           DUMP.REL      FOO.DMP
Appendix 1                                                  RPG    73


                          Library Searches


Several REL  files may be  combined into a  library.  A library  is a
special REL file from  which routines may be  independently selected.
Library  files are  made by  combining REL  files together  using the
FUDGE2  program  (which  is  described  in  DEC  documentation).  For
example, sine, cosine, and tangent routines might be combined  into a
trig library, TRIG.REL.  Then, if a particular program used  just the
sine routine, instead of loading the entire trig package it  would be
able to select only the sine routine.  The LOADER will search library
files  and load  only  the programs  that are  needed.   The /LIBRARY
switch after  the name of  a library file  tells RPG to  request this
LOADER feature.   The /LIBRARY switch  may also be  used as  a sticky
switch; its inverse is /NOSEARCH.  Suppose there is a  program called
NLT which uses the sine routine that was included in  TRIG.REL.  Then
the command  LOAD NLT,TRIG/LIBRARY will  cause NLT  to be  loaded and
TRIG to be searched.   The LOADER notices that NLT  requires SINE.REL
and searches TRIG.REL for it.  Suppose another program, XLT, requires
routines from two library files, TRIG.REL and IOPACK.REL, and must be
loaded  with  another program  LT.   Then any  one  of  the following
commands could do this:

LOAD XLT,LT,/LIBRARY TRIG,IOPACK
LOAD /LIBRARY XLT/NOSEARCH,LT/NOSEARCH,TRIG,IOPACK
LOAD XLT,LT,TRIG/LIBRARY,IOPACK/LIBRARY

Programs which use  library files must  be placed before  the library
file names in  the command.  This is  because the LOADER  cannot know
what routines to  extract from each library  until it has  loaded the
programs that require library routines.



                   Nonstandard Processor Features


Processors  other than  SAIL,  FAIL, FORTRAN,  PUB, or  MACRO  may be
specified by  using the non-standard  processor feature.   The switch
/NONSTANDARD DEV:NAME  specifies  a nonstandard  processor.   In this
switch, DEV  (assumed to  be DSK, if  absent) is  the device  name on
which  to  find NAME.DMP,  the  core image  file  of  the nonstandard
processor.  Once the /NONSTANDARD switch is used, RPG  will recognize
the extension  NAM (i.e.,  the first three  letters of  the processor
name) and the switch /NAME (the processor name) in the  command line.
A project-programmer name may be used in specifying  the non-standard
processor.

For  example,  for a  user  to  translate the  program  SINE  using a
Appendix 1                                                  RPG    74


processor named  PROC on  his disk  area, he  could use  the command:
COMPILE SINE/NONSTANDARD PROC.

When a standard processor  is used, it is  known that it will  take a
text source file and produce  a binary REL file, and possibly  a text
LST file.  With nonstandard processors there is no such guarantee.  A
nonstandard processor may  process a text file  into a new  text file
which  becomes input  to  a standard  processor.  It  is  possible to
specify all these functions in a single COMPILE-class command.

If a  nonstandard processor generates  a text file  instead of  a REL
file,  loading must  be inhibited.   The /NOLOAD  switch accomplishes
this.  The /NOLOAD  switch must be used  for each term that  does not
produce a  REL file  (except in  the COMPILE  command, which  does no
loading anyway).  The inverse switch is /LOAD.

Suppose the preprocessor,  NSP, translates the  file BAZ into  a file
FOO which  is a  FAIL program.  FOO  must be  translated when  NSP is
done.  Also, MAIN  and SINE must be  translated and loaded  with FOO.
The command:

LOAD FOO=BAZ/NONSTANDARD NSP/NOLOAD,MAIN,SINE,FOO/FORWARD

will do all  of this.  The /FORWARD  switch is necessary  because the
file FOO does not exist at the time the command is  given.  Including
the  /FORWARD switch  prevents  RPG from  looking for  FOO;  RPG will
assume that FOO magically appears before FAIL is called.  The inverse
switch is /NOTFORWARD.

The  processor  DO  (see  Section  5.7)  is  another  example   of  a
nonstandard processor.  The DO program writes QQSVCM.RPG to force the
exit-and-go command from the editors to run DO again.



                         Translator Switches


Switch names enclosed in parentheses "(" and ")" are  passed directly
to the  translator.  The  documentation for  each of  the translators
explains what  switches are available.   The switches passed  in this
way  appear  on  the  source  file  specification.   Sometimes  it is
necessary to put  switches on the binary  or listing term.   For this
purpose, there are two other switch constructions.

The construction  (#1,#2), where  #1 and #2  are any  switch strings,
passes  #1  to  the binary  term  and  #2 to  the  source  term.  The
construction  (#1,#2,#3) passes  #1  to the  binary term,  #2  to the
listing term, and #3 to the source term.  For example,
Appendix 1                                                  RPG    75


COMPILE/LIST FOO(AX,BY,CZ)

will pass  the switch  string "AX" to  the binary  term, "BY"  to the
listing term, and "CZ" to the source term.

The PUB command  will take PUB  switches enclosed in  parentheses and
pass them on to PUB.
Appendix 1                                                  RPG    76


                           LOADER Switches


Switches to the LOADER  may be specified in a  COMPILE-class command.
A percent sign (%) followed by a letter (or a number and a letter) in
the command  string of  one of  the LOAD,  TRY, EXECUTE,  PREPARE, or
DEBUG commands  directly specifies  that switch  to the  LOADER.  The
following are the legal LOADER switches:

%A     Causes a listing of all global symbols to be printed
%B     BLT symbols down when done loading
%C     Chain beginning with Common
%D     Load DDT
%E     Start up program when done loading
%F     Enter library search mode;  search all default libraries
%G     Finish loading, make final links, and exit
%H     Load and start RAID
%I     Ignore starting address of this program
%J     Use starting address of this program
%nK    Adjust to n K of core when done loading
%L     Search this file as a library
%M     Print storage map
%N     Leave library search mode
%nO    Set program origin to n, absolute
%P     Inhibit automatic library search for undefined globals
%Q     Allow automatic library search
%R     Chain beginning with resident module
%S     Load symbol table also
%T     Load and start DDT
%U     Print current list of undefined globals
%V     Load RAID
%W     Load without symbols
%X     Do not list all globals
%Y     Load SAILOW for 2 segment SAIL programs
%Z     Restart LOADER
%<     Load high segment

For a full description of  what these switches mean, consult  the DEC
LOADER documentation.  The LOADER has been modified for  Stanford, so
the DEC documentation  does not accurately  reflect the state  of the
software.  Consult a wizard if necessary.



                            CREF Command


This command causes a cross-reference listing to be made on  the line
printer.  All the files  made from COMPILE-class commands  which used
Appendix 1                                                  RPG    77


the /CREF switch are listed.  (LOGOUT makes RPG forget  which listing
files  to process.)   The CREF  command activates  RPG which  in turn
activates the CREF program in  a special way.  The CREF  program when
activated in this way reads a file that RPG wrote which  contains the
names of the files to process.



                           Error Messages

                           Obvious errors

COMMAND ERROR
TOO MANY SWITCHES
UNRECOGNIZABLE SWITCH
DEVICE NOT AVAILABLE
TOO MANY NON-STANDARD PROCESSORS


                            Subtle errors

UFD HASHING ERROR INCITED BY DCS
        Probably you have too many files on one disk area.

TOO MANY NAMES
        Your  command included  too many  file names  or non-standard
        processor names.

PROCESSOR CONFLICT
        A + construction  specified files with  different extensions,
        e.g., COMPILE FOO.SAI+BAZ.FAI.

NESTING TOO DEEP
        Too many levels of command files.

NO SUCH FILE
        Some LOOKUP  failed.  A  file named in  the command  does not
        exist.


           Horrible errors (A wizard should be consulted)

DISK NOT AVAILABLE
INPUT ERROR READING UFD
INPUT ERROR
NOT ENOUGH CORE

OUTPUT ERROR
        Some file could not be written correctly.  Possibly a file is
        write protected.  Otherwise you may need help.
Appendix 1                                                  RPG    78



UFD LOOKUP FAILURE
        You are aliased to a non-existent disk area.   Otherwise, you
        need a wizard.
Appendix 2                                                 COPY    79


                             APPENDIX 2

                                COPY




This appendix  is taken from  COPY.RPH[S,DOC], SAILON 61.1,  the COPY
manual.  The manual first  describes the basic COPY command  with all
possible options, and then lists the other monitor commands which run
COPY and describes their special functions.



                               Syntax


In this section the following rules are observed.  Anything  in curly
brackets is optional.  Anything enclosed in brokets (e.g., <.......>)
has a  syntactic definition  of its own  and is  described elsewhere.
Upper and lower case  letters are legal anywhere.  A  break character
is something which is  not a letter, a  number, or a "*".   This will
become  important  when you  try  to  figure out  some  of  the error
messages.  In this manual the term sticky means that the  sticky item
is applicable until changed or until the end of the current command.

The basic syntax for all COPY commands is:

COPY {{<destination term>}{,<list term>}←}<source term>

"=" may be substituted for "←".

  <destination term>::=<switch term>
  <source term>::=     <switch term>{,<source term>}
  <switch term>::=     {<switch list>space}<term>{<switch list>}
  <list term>::=       <term>
  <term>::=            {dev:}{filnam{.ext}}{[ppn]}
                       | {<switch list>}{dev:}{[ppn]}{<switch list>}
                            @<spec term>
                       | \<filehack selector>
                       | ∂{ <pn> | * }
  <spec term>::=       {<spec switch list> }{dev:}{filnam{.ext}}
                            {[ppn]}{<spec switch list>}
  <switch list>::=     {/<switch>}{(<page list>)}{<switch list>}
  <spec switch list>::={/<switch>}{<spec switch list>}
  <page list>::=       <page term>{,<page list>}
  <page term>::=       N{:M}
Appendix 2                                                 COPY    80


                          General Operation


COPY  reads data  from the  logical file(s)  indicated by  the source
term, performs  any operations requested  by the switch  term(s), and
writes  the data  on the  logical file  indicated by  the destination
term. Any listing information goes to the list term.

Dev and p,pn are sticky in  the source; that is, if they  are absent,
the last  one specified is  used. The default  device is DSK  and the
default p,pn is blank (those of the current job).

A single * may be substituted for any of the following:

  filnam
  ext
  p
  pn

A * in the source term means "all." A * in the destination term means
"same as in source file being transferred."

If filnam.ext is absent in the destination term, *.* is  assumed.  If
the destination filnam.ext are  specified (no *'s), all  source files
will be concatenated into one big file with that name.

For example:

COPY DING←FOO,BAZ

would  cause  a file  named  DING to  be  created on  your  disk area
comprised of the  files FOO and BAZ  from your area.  If  filnam.* or
*.ext  is used  in the  destination term,  the source  files  will be
copied  onto the  destination one  by one  with the  new  filename or
extension.  <destination term>← may be left out and DSK:*.*←  will be
assumed.  For  source terms with  directory devices you  must specify
the filnam.ext.

If you try to write on  top of a file which already exists,  you will
be given  the option of  deleting it  or not.  If  any of  the source
files you have specified do not exist, you will be informed and given
the proper option.

If  a  string  of  source descriptors  is  specified,  the  string is
executed from left to right.

You   cannot   write   a   file   in   two   different   modes  (e.g.
FIL1←TTY:,DSK:FIL2).    However  FIL1←TTY:,DSK:FIL2/ASCII   is  quite
acceptable (/ASCII  causes the data  mode to be  0).  Data  modes are
explained in the UUO Manual.
Appendix 2                                                 COPY    81


The <spec term> construct causes the scanner to continue  scanning in
the file  specified by  the term.   The term  must indicate  a unique
file.   When end  of file  occurs the  scanner again  reads  from the
terminal.  No spec terms may appear in the file.   Switches preceding
the "@" are treated  as sticky switches.  Switches following  the "@"
are treated as sticky  switches only while reading from  the indirect
file.   In a  sense the  indirect file  is a  "program  block."  Upon
leaving the  "block" all defaults  are reset to  those in  force just
before the "@".  A device name and p,pn may precede the "@", in which
case the  defaults are changed  to those, but  no operation  is done.
The device and p,pn used in  the spec term do not affect  the current
defaults.

The \<filehack selector> construct for a term is a  special shorthand
feature  to  allow  commonly referenced  files  which  would normally
require a large amount of typing to be entered quickly. The following
is a  list of legal  filehack selectors and  what they are  short for
(<pn> stands for the current programmer name right adjusted):

  Filehack
  Selector File selected       What for?

  MAIL     <pn>.MSG[2,2]       User <pn>'s mail file
  MSG      <pn>.MSG[2,2]                 "
  MAINT    MAINT.TXT[2,2]      5 day computer maintenance forecast
  NOTICE   NOTICE.TXT[2,2]     Public mail file
  RPG      *.RPG[*,<pn>]       All of current user's RPG files
  NAP      <pn>.NAP[2,2]       AP news notification file
  OPTION   OPTION.TXT[*,<pn>]  All of current user's option files
  DAY      DAY.TXT[2,2]        Daily birthday or holiday message
  PLAN     <pn>.PLN[2,2]       Current user's plan file

The  ∂{  <pn>  | *  }  construct  is another  form  of  shorthand for
referencing MAIL files (see Appendix 4).  If no argument  follows the
∂ then the current user's mail file is indicated. If <pn> is used, it
means  that user's  mail file.  And  lastly, if  * is  used  the file
NOTICE.TXT[2,2] is selected (this is the public mail file).

There is a page counter in COPY which monitors ASCII output  for form
feeds.  When a form feed is encountered, the counter  is incremented.
If a page list is used in a term, N is taken as the starting  page of
this output and M (or N  if M is absent) as the ending  page.  Output
is only active when the counter is within the range of the  page list
(e.g., LIST COPY(21) would list page 21 of the file COPY).   When the
end of  the first term  is exhausted, control  is transferred  to the
next term, and so on until the right parenthesis is reached, at which
point output ceases.   If more than one  file is indicated,  the page
list is re-scanned  for each one.  Page  lists are never  sticky.  An
asterisk (*) may  be used in  a page list  instead of the  final page
Appendix 2                                                 COPY    82


number, to denote the last page, e.g., LIST COPY(3:*) would  list all
but the first two pages of the file COPY.

Switches will be described in a section of their own.  See  /LIST for
an explanation of "list term."

Logical  device names  may be  used, but  all switches  apply  to the
physical device.   The following are  legal physical devices  for the
copy command:

  DSK
  UDP
  DTAn
  MTAn
  TTYn
  TTY
  LPT
  XGP
  PTR
  PTP

When the special character  ↓ (↑A on Teletypes) appears,  the scanner
will  read  the  line  character-by-character  without interpretation
until the next ↓ (or ↑A).  This is useful for allowing non-alphameric
characters  to  be included  in  filenames, e.g.,  editor  or spooler
temporary files.

For numeric input there is always a default radix (either  decimal or
octal).   Sometimes, however,  it is  desirable to  force one  or the
other.  A number preceded by a single quote is always  interpreted in
octal.  A number preceded by a double quote is always  interpreted in
decimal.
Appendix 2                                                 COPY    83


                        Device Peculiarities


Non-Directory Devices:

If the source device doesn't have a directory and the filename and/or
extension  is specified  by  a *,  then a  generated  filename and/or
extension is used.  The  generated filename starts out as  AAAAAA and
the  generated  extension starts  as  COP.  Either  of  these  may be
changed by specifying a filnam.ext in the source term.  If a  star is
used, the old name is  retained; otherwise it is replaced by  the new
one.  At the beginning of each term the filename is either changed to
that  which  was  specified  or  incremented  by  one   letter  (i.e.
AAAAAZ.COP  is followed  by AAAABA.COP).   The following  example may
clear things up:

COPY DSK:*.*←MTA0:,,FOO.*,,*.BAZ

This would read 5 files from MTA0 and give them the following names:

  AAAAAA.COP
  AAAAAB.COP
  FOO.COP
  FOOA.COP
  FOOB.BAZ

Disk:

If you attempt to write on an area which is protected by  a password,
you will be  asked the password.  If  you answer <cr> to  the request
for a password  COPY will assume  that you don't  know it and  do the
appropriate thing.   You may  delete files  belonging to  other users
(please exercise extreme care).  However, if you attempt to  delete a
file on a user file directory whose programmer name is different from
the one you used when logging in, you will be asked if you  are sure.
All normal file protection applies to deletions.

User Disk Pack:

COPY  treats new  format (file  structured) UDPs  like the  main file
disk.   The file-structure  simulation  which COPY  provided  for old
format UDPs is no longer available.

DECtapes:

DECtapes are  assumed to  be in  PDP-6 format  (which is  the current
format our system  uses).  See the UUO  Manual for an  explanation of
DECtape formats.  If the directory becomes full (more than 22 files),
you will be  told which was the  first file not transferred.   If the
Appendix 2                                                 COPY    84


DECtape  becomes  full,  the  file  currently  being  written  may be
incomplete.  An attempt is  made to detect this condition  before the
transfer is initiated,  but this is  not always possible.   The total
file capacity of a DECtape  is about 71.4K words.  In order  to write
on  a DECtape  the OFF-WRITELOCK-WRITE  switch must  be in  the WRITE
position.  If not, you will be told to set it.

Magnetic tapes:

Mag tapes may be  made to look like  directory devices by use  of the
/SAVE  switch which  is described  later. All  mag tape  switches are
separate for  input and  output (see rules  about switches  in switch
section).  This means that mag tape switches in the  destination term
don't apply to the source terms.

Paper tape:

Paper  tape  I/O  is  done  in  binary  non-checksummed  mode  unless
otherwise specified (see /ASCII).  You should turn off the paper tape
reader when you are done.  A  paper tape with a jagged end  may cause
spurious data to be read.  It is best to tear it evenly at a fold.

Teletypes:

Since  some terminals  cannot reproduce  the full  Stanford character
set, COPY  provides the  standard SOS conversion  for output  of some
special characters on model 33  and model 35 Teletypes which  are not
in  full  character   set  mode.   See   Appendix  13  for   the  SOS
representation.

On display terminals, COPY displays the number of the page being read
(if >2) if reading in mode 0, i.e., the number of form feeds seen +1.

Spooling pseudo-devices:

COPY  recognizes two  pseudo-device names,  TPL: and  PGX:,  to allow
spooling  of the  output of  some copy  function to  the LPT  or XGP,
respectively.  These device names  may be used only in  output terms,
and may  not be used  with file  names.  COPY creates  a file  on the
[SPL,SYS]  directory  containing  the desired  output,  and  enters a
spooling request  for the  appropriate device.   The file  is deleted
after  spooling.   For  a  standard  COPY  command,  the   effect  is
essentially  equivalent  to the  recommended  SPOOL/RECOPY  (see page
95); the main advantage of this capability is for direct  spooling of
list terms, e.g.,

DIRECTORY TPL:←[*,SYS]

to  spool a  list  of the  [*,SYS]  file directories.   (Note:  It is
Appendix 2                                                 COPY    85


claimed that these pseudo-device  names stand for The Pseudo  Lpt and
Pseudo Graphic Xerox-machine respectively.)



                              Switches


The term  sticky means "applies  until the end  of the line  or until
changed  temporarily or  permanently  by some  means."  Most switches
appearing in the destination term are carried over as sticky switches
in the source. Those switches which are separate for  destination and
source  terms are  indicated  by a  star preceding  the  switch name.
Switches appearing in the source term are sticky only if they precede
the term with which they  appear.  Otherwise, they apply only  to the
current term and must follow it.  Only the first six characters  of a
switch  are  significant.   You  are  only  required  to  use  enough
characters to uniquely specify the switch.

The following switches are now available:

  SWITCH         ABBREV MEANING

  ASCII          A    This  forces  transfers  to  be  in ASCII.
                      Beware!  This switch  will cause  SOS line
                      numbers to become part of the text.
  ASK            ASK  This  causes  dev:filnam.ext[p,pn]  to  be
                      printed for each file  under consideration
                      followed by a question mark. If you answer
                      "Y"  the  operation will  proceed,  if you
                      answer "G" the operation will  proceed but
                      you will not be asked the for the  rest of
                      the  term,  otherwise  the  file  will  be
                      skipped.
  BINARY         B    This  causes the  data mode  to be  13 and
                      forces word by word transfer of data.
  BLOCKED        BL   This causes records to be ended  on output
                      whenever they are ended on input.
  CONVERT        C    This  causes copy  to treat  the character
                      following  a  line  feed  and   the  first
                      character of a  file as a  FORTRAN control
                      character.   Be careful,  this  happens on
                      output.
  *DENSITY=n     DE   This sets the density in bpi to n  where n
                      equals 800, 556,  or 200.  This  switch is
                      ignored for devices other than  mag tapes.
                      The system default density is 556.
  *DSPOOL        DS   This switch, when used with destination or
                      list terms, causes  the output file  to be
Appendix 2                                                 COPY    86


                      spooled with  the /DELETE  switch.  Output
                      device  must  be  disk.   This  switch  is
                      illegal in source terms.
  DUMP           DU   This  causes  each 36  bit  word  from the
                      input device to be converted to  the ASCII
                      representation  of  the  octal  number  it
                      represents  and  to then  be  sent  to the
                      output  device.  The  following  format is
                      used.   A  "word number"  is  sent  to the
                      output device  which indicates  which word
                      in the file is the first word in this row.
                      Then 8 data words are transferred.  Then a
                      <cr><lf> is inserted.  If desired, a "page
                      list" may be used for /DUMP;  however, the
                      values are those of word addresses  in the
                      file instead of pages.
  *EVEN          EV   This  sets  mag  tape  transfers  to  even
                      parity.
  EXTRA=n        EX   Whenever a line feed is seen n  extra line
                      feeds are put  out; n must be  an unsigned
                      decimal  integer.  If  n=0 line  feeds are
                      converted to a 177 followed by a  21; this
                      inhibits form ejection at  page boundaries
                      on the line printer.
  EXTRA≡n        EX   (Note "≡" not "=".) This switch, used with
                      the XGP only, sets the  inter-line spacing
                      to n raster units.
  FAST           F    All the names specified by the source term
                      are listed (no size or other  info).  This
                      switch  is  therefore  much   faster  than
                      /SEARCH.
  FONT#n=file    FON  This switch  is used  when copying  to the
                      XGP  to  select  a  font.   Font  number n
                      (default is 0) is taken from the specified
                      file.  The file specification  can include
                      any of  filename, extension, and  PPN; the
                      defaults are FIX25.FNT[XGP,SYS].
  FOONLY         FOO  This  switch  is used  to  produce  a file
                      directory  listing  meant  to  be  read by
                      various  programs rather  than by  a human
                      being.  The  switch name derives  from the
                      fact that the  switch was created  for the
                      benefit  of  layout  and  drawing programs
                      used in the  design of the  late, lamented
                      SUPER FOONLY computer.
  FULL           FU   This forces all the  directory information
                      to  be printed  under /SEARCH  even  if no
                      list term was specified.  This switch does
                      not automatically imply /SEARCH.
Appendix 2                                                 COPY    87


  GTOTAL         G    At  the beginning  of the  execution  of a
                      term the term  is printed.  At the  end of
                      the term, a line is typed of the form

                                  TOTAL=  x.x  n BLK  pp%

                      where x.x is the size of the file in K and
                      tenths (if  the file  is smaller  than 1K,
                      the size in words is typed instead),  n is
                      the number of disk blocks allocated to the
                      file,  and  pp  is  the  percent   of  the
                      allocated  space which  is  actually used.
                      This switch implies /SEARCH.
  HEADER         H    This causes a header to be put out at what
                      would be the top of each page on  the line
                      printer.  The header looks like this:

                  DATE  TIME     FILNAM.EXT    P,PN       PAGE N-M

                      The current date  and time are used,  N is
                      the  logical page  number (number  of form
                      feeds  seen  plus  one),  and  M   is  the
                      physical page of that logical page.
  IGNI           IGNI This causes input errors to be ignored (no
                      message).
  IGNO           IGNO This causes output errors to be ignored.
  KILL           K    The  input  file  is  deleted   after  the
                      transfer is  finished, even if  the output
                      filename   is  the   same  as   the  input
                      filename.  If  the 200  bit in  the file's
                      protection  code is  on, COPY  asks before
                      deleting the file.
  LIST           L    This  causes   the  names  of   the  files
                      transferred during that term to be listed.
                      If the input device is the disk the [p,pn]
                      are  also  listed.   Non-directory devices
                      will obviously  list nothing.   The output
                      will go to  the "list term".  If  the list
                      term is absent, the output will go to your
                      terminal.
  *MLENGTH=nnnn  M    This   allows   the   user    to   specify
                      nonstandard  length records  for  mag tape
                      I/O, where nnnn is  a 1 to 4  digit number
                      interpreted in  octal which  specifies the
                      number of data words per record.
  NONUMBERS      N    This deletes line numbers from  files that
                      have  them.   This  forces  an  ASCII mode
                      transfer; in fact, /NONUMBERS can  be used
                      on  any ASCII  transfer. Do  not  use this
Appendix 2                                                 COPY    88


                      switch on anything  but text files  or you
                      will be sorry.
  NOSPACES       NOS  This switch  eliminates spaces at  the end
                      of a line.
  ODD            OD   This  sets  mag  tape  transfers   to  odd
                      parity.  This mode is standard and  is the
                      default option.
  OPTIMIZE       OP   This forces COPY to treat the file  as one
                      produced  by  SOS,  and  to  pack   it  by
                      allowing lines to  span a record  break as
                      long as line numbers are not the last word
                      of a record.   SOS will read  an OPTIMIZEd
                      file, but will  not write a  record ending
                      with a partial line.  A file  which cannot
                      be read by SOS because of line  numbers or
                      page marks at the ends of records  will be
                      "fixed" by this switch.
  PROTECTION=nnn P    This causes  the output  file to  have the
                      protection nnn, where n is a digit  from 0
                      to   7.   If   no  protection   switch  is
                      specified,  the  protection  of  the input
                      file is  used (for  non-disk input  000 is
                      used).   All  three n's  must  be present.
                      This switch  applies only to  disk output.
                      When  concatenating files,  the protection
                      applicable to  the first  file transferred
                      is used.
  QUIET          Q    This switch prevents you from  getting the
                      message "FILE  ALREADY EXISTS...."  If the
                      output file already exists, it  is deleted
                      without  a  sound.  Also,  if  this switch
                      appears with  /SEARCH, then only  the p,pn
                      and  the size  on that  p,pn  are printed.
                      This switch also prevents being  asked for
                      confirmation when trying to delete  a file
                      with  the  200 bit  on  in  its protection
                      code.
  REFERENCE      REF  This  switch  is like  /SEARCH  below, but
                      includes in the directory listing an extra
                      column containing  the date on  which each
                      file was last read (referenced by LOOKUP).
  RENAME         REN  A rename  is done on  the input  file with
                      the   output  file   information.   /QUIET
                      applies when the output filnam.ext already
                      exists.
  *SAVE          SA   If the output  device is a mag  tape, four
                      words   of   directory   information   are
                      written.   If the  input device  is  a mag
                      tape, four words of  directory information
Appendix 2                                                 COPY    89


                      are read and compared with the source name
                      specified.  If they don't match, that file
                      is skipped and  the next examined  until a
                      match  is  found  or the  end  of  tape is
                      reached.
  SEARCH         SE   This switch overrides all  other switches.
                      It gives  you more information  than /LIST
                      and  suppresses any  transfers.   Added to
                      the /LIST information, you get the size of
                      the  file in  1K records  (or in  words if
                      less than  1K), the date  and time  it was
                      last  written,  the  protection,  and  the
                      offset  (see  the  UUO  Manual).   This is
                      preceded by a suitable heading.  The whole
                      smear is preceded by the current  date and
                      time.  If the information does  not exist,
                      it is not listed.  If you try to  SEARCH a
                      non-directory  device,  you  will   get  a
                      strange  answer.  The  output goes  to the
                      same  place   as  with  /LIST,   with  the
                      following variation: If the "list term" is
                      omitted, the listing goes to your terminal
                      and the  information and heading  for disk
                      input  will  be  truncated  to FILNAM.EXT,
                      [P,PN], and SIZE.  If /QUIET is  used with
                      this   switch   and  no   list   term  was
                      specified,  only  the p,pn  and  the total
                      size of each disk area is printed.  If the
                      input device was the disk and the file has
                      been dumped by DART, the date and  tape ID
                      of the last dump are printed,  followed by
                      ">" if it was dumped twice or more.
  *SPOOL         SP   This is  the same  as /DSPOOL  except that
                      the /DELETE switch is not used in spooling
                      the file.
Appendix 2                                                 COPY    90


  TITLE          T    This causes a  "title page" to be  put out
                      in large block letters followed by  a form
                      feed. The title is of this form:

                                  FILNAM.EXT

                                  P,PN

                                  TIME

                                  DATE

                      The date  and time are  when the  file was
                      last written.  For  non-directory devices,
                      <device  name>:  is  printed  in  place of
                      filnam.ext and p,pn.



                          Monitor Commands


The following is  a list of the  monitor commands which use  COPY and
how they work.  The syntax is the same as for COPY.
Appendix 2                                                 COPY    91



  COMMAND  EFFECT

  DELETE   This deletes  all the files  specified by  the source
           term,  and  types  the space  reclaimed  as  with the
           /GTOTAL switch.   If the  200 bit is  on in  the file
           protection key, you will be asked if you  really want
           to delete the  file (/QUIET overrides  this feature).
           The destination term is interpreted as the list term.
           The list term is therefore illegal.
  DIRECTORYThis gives  you all or  part of the  file information
           for the source term(s)  (or *.* if no source  term is
           used).  If /L appears anywhere in the  command string
           the  default  list device  will  be set  to  the line
           printer.  The destination term is treated the same as
           for DELETE.
  LIST     This  sets  the  default output  device  to  the line
           printer and turns on the /HEADER switch.
  PRINT    This  sets  the  default output  device  to  the line
           printer  and  turns  on  the  /NONUMBERS  and  /TITLE
           switches.
  RENAME   This allows  you to  change the  filename, extension,
           p,pn,  and  protection  of  a  file.   The  format is
           newname←oldname.    Use   /PROTECTION=    to   change
           protection.
  TRANSFER This  copies  files  from one  place  to  another and
           deletes the source files.
  TYPE     This sets the default output device to your terminal.
  XGPLIST  This sets the default output device to the XGP.



                              Examples


COPY DTA4:←*.*

This would cause  all the files  on your disk  area to be  written on
DTA4.

COPY ←DTA4:*.*

This would cause  all the files  on DTA4 to  be written on  your disk
area.

COPY <filnam.ext>/NONUMBERS

This would delete sequence numbers (if any) from the file indicated.

COPY [2,RPH]←*.*[1,RPH]
Appendix 2                                                 COPY    92


This would cause all  the files on 1,RPH  to be copied onto  2,RPH no
matter  who  you are  logged  in under  (subject  to  file protection
failure).

TYPE <filnam.ext>

This would cause the specified file to be listed on the  terminal you
are logged in on.

LIST <filnam.ext>(2)/NONUMBERS

This would cause  page 2 of  the specified file  to be listed  on the
line printer with headers and without line numbers.

DIR LPT:←*.RPG[*,*]

This would cause the filnam.ext, [p,pn], size, etc.  for all files in
the world with the extension RPG to be listed on the line printer.

COPY FOO←TTY:,FOO/ASCII

This would allow  you to add  text at the  beginning of the  file FOO
(/ASCII is mandatory).

RENAME FOO/PROTECTION=077

This would change the protection of the file FOO to 077 without doing
a transfer.

PRINT FOO

This would cause the file called FOO to be listed on the line printer
without line numbers and with a title page.

DIR[*,RPH]/QUIET

This will tell RPH the size of each of his areas without printing the
filenames and other information.

COPY TEMP←↓$ED$09↓.TMP

This copies the  file $ED$09.TMP into TEMP  so that you can  edit it.
(These names are created by SOS.)

DELETE @DEL

This would use the file DEL  as a list of files to be  deleted.  This
method is very good for "cleaning" your area.
Appendix 3                                                SPOOL    93


                             APPENDIX 3

                                SPOOL




This  description  of the  SPOOL  commands is  taken  from  the SPOOL
manual, SPOOL.REG[UP,DOC].

Spooling  provides a  method of  producing line  printer  listings of
files without the usual disadvantage  of tying up a user's  job while
the listing is actually being done.

To use the spooler, a user must create commands for it.  A command is
the name of a file  to list, and control switches.   Spooler commands
are created by the monitor commands SPOOL and XSPOOL.

As an example of spooling, the monitor command

SPOOL SPOOL.REG[UP,DOC]

will cause the LPT spooler to list the file SPOOL.REG[UP,DOC].

Spooled listings are  preceded by a  title page (except  see /NOTITLE
below), used to  make it easy  to separate different  listings.  This
title includes the file identifier, the name of the requestor and his
project-programmer name, the current date and time, and the  date and
time when the file was last written.  Programmer names are  read from
the file FACT.TXT[SPL,SYS].  Project  names (of which there  are few)
are read from the file XFACT.TXT[SPL,SYS].

In the discussion below, "SPOOL"  is used to mean either  the command
SPOOL or the command  XSPOOL, except as noted.  SPOOL  makes requests
for the LPT spooler; XSPOOL makes requests for the XGP spooler.

To have  the spooler make  a listing the  user must tell  the spooler
what file(s) to print.  This easiest way to tell the spooler  what to
do is by the monitor command SPOOL. This command consists of the word
SPOOL followed  by the  name(s) of  the file(s)  to be  listed.  File
names are  separated by commas.   Each file name  may be  followed by
switches, explained below.  The  program SPOOL will send  commands to
the spooler.

Files to be  spooled are specified in  the conventional way,  by file
name, extension, and optionally project-programmer name.

Asterisk,  *,  may  be  used to  allow  matching  of  any  file name,
extension,  project name,  or programmer  name.  (RPG,  DMP,  and REL
files will not be matched by * in the extension).
Appendix 3                                                SPOOL    94


Switches are  allowed either  preceding or  following the  file name.
Switches that  precede the  name are  sticky and  will be  applied to
subsequent names.  A switch consists of a slash, the switch name, and
sometimes, a parameter.  For example, /REPEAT=5.

The following switches are available.  Note that most  switches occur
in two senses  (e.g., delete and  nodelete). This allows  an explicit
switch in some term to override a sticky switch.
Appendix 3                                                SPOOL    95


  Switch      Action

  DELETE      DELETE this file after printing. The file  protection
   NODELETE   of  this file  must be low enough so that the spooler
              can delete it.  The file must belong to the requestor
              (alias not allowed).
  NONUMBER    Omit SOS line numbers  from  the  listing.  "N" is an
   NUMBER     accepted abbreviation for NONUMBER.
  FORTRAN     The first character of each  line is interpreted as a
   NOFORTRAN  FORTRAN carriage control character.
  LPT100      The spooler will open the LPT in mode 100, instead of
   LPT0       the usual mode 0.  This changes some character codes.
  HEADING     Print a page heading at the top of each page.  "H" is
   NOHEADING  accepted as HEADING.   HEADING is the default for all
              files, except:
                  LST or DOC extensions,
                  any file from any area with programmer = DOC.
              The heading includes date, time,  filename, and  page
              numbers.
  TITLE       Precede the listing with a title page.   TITLE is the
   NOTITLE    default for all files.
  NARROW      Center the title page to fit an 8.5 inch wide page.
   NONARROW
  RECOPY      Copy the file to  [SPL,SYS]  and list the copy.  This
   NOCOPY     allows  the file to be edited while the listing is in
              progress.
  REPEAT=n    Make n copies of the listing.  (REPEAT is NOT sticky,
              and is not allowed in XSPOOL.)
  EXTRA=n     Insert n extra line feeds in the listing  after every
              line feed in the file.  (EXTRA is NOT sticky).
  DUMP        Octal listing.  Data will be printed  as  octal  full
   NODUMP     words. (OCTAL is an equivalent switch.)
  NOFF        Each line feed in the file is translated to  '177&'21
   FF         which causes single spacing with no form-feed between
              pages.
  NOWARN      Suppress "spooling done" typeout after listing.
   WARN
  ASK         Before making the spool command, SPOOL will  type the
              file name and wait for the user to answer with "Y" to
              spool the file. (This is useful with *.* terms).
  HOLD=hhmm   The listing will be held in the queue  until the time
              specified by hh hours, mm minutes. (24 - hour time is
              assumed.)  If hhmm is prior to the current time, hhmm
              tomorrow is assumed.
  MODE=n      Open the file in mode n (n is octal).

File specifications may be  read from an auxiliary file  by including
in the  command line the  name of the  auxiliary file preceded  by @.
This file may include file names and switches.
Appendix 3                                                SPOOL    96


                           Delayed Listing


Usually requests for spooled listings will be processed as rapidly as
possible.  Under  some circumstances  this may  not be  desired.  For
example, a long listing impacts the normal operation of the system by
making the line printer unavailable during its duration.  The spooler
allows users to delay such  listings until a time of  minimum loading
(e.g.,  0500) when  the unavailability  of the  line printer  is less
likely to interfere with other users.

If the construction /HOLD=hhmm appears in a command line then hhmm is
interpreted as  the (24  hour) time  of day  when the  listing should
actually be sent to the line printer. In the example below, 1730 will
be interpreted as 5:30 PM.

Example:

SPOOL SYSTEM.LST[S,SYS]/HOLD=1730

If  the  time specified  is  smaller  than the  current  time,  it is
interpreted to mean, "list the file tomorrow at the  time specified."
That is, if at 10PM you give the command:

SPOOL BAZ.FAI/HOLD=400

then the listing will occur in six hours.



                           Page Selection


You may follow a file name by a list of ranges of pages that you want
listed.  The list must be parenthesized.  For example:

SPOOL FOO.SAI (1,7,5:8)

will cause  page 1, page  7, and  pages 5 through  8 inclusive  to be
listed.  Page ranges are never sticky.

In octal dump mode,  this page range list  is used to specify  a word
range to list.
Appendix 3                                                SPOOL    97


                      Multiple Copies of a File


The REPEAT switch (/REPEAT=n) is accepted by SPOOL.  The effect is to
interpret n as a decimal number  and to list that many copies  of the
file.   Multiple copies  are spooled  as usual,  except that  the two
pages of heading that normally precede a file (except if the /NOTITLE
switch is used) are suppressed on the second and subsequent copies of
the file.
Appendix 3                                                SPOOL    98


                       XSPOOL Special Features


The XSPOOL command  is quite similar to  the SPOOL command.   The XGP
has greater flexibility than the line printer, so more parameters can
be specified in the XSPOOL command.

The following switches are legal only in the XSPOOL command:

  FONT#n=f n is  a number  from 0 to  15 decimal.   f is  a file
           name.  The XGP spooler  will use the font named  f as
           font  n  when spooling.   If  #n is  omitted,  n=0 is
           assumed.   Up   to  16   font  select   switches  are
           permitted.  The defaults for filename, extension, and
           PPN are FIX25.FNT[XGP,SYS].
  LMAR=n   Set left margin to column n.  Columns in the  XGP are
           numbered from  0 to  1699 (approximately).   The left
           margin  is  the  column  which  the  carriage  return
           character selects.
  RMAR=n   Set right margin to column n.  If the XGP is going to
           write  a character  that exceeds  this margin,  a new
           line will be started.
  TMAR=n   Set the  number of blank  scan lines between  the top
           edge of the page and the first line of text.
  BMAR=n   Set the number of blank scan lines between the bottom
           of the text and  the bottom edge of the  paper.  (The
           monitor interprets BMAR=0 to mean no paper cutting.)
  PMAR=n   Set the number of scan lines in the page  body.  Text
           is written inside this area.  (The monitor interprets
           PMAR=0  to  mean  that  the end  of  a  page  body is
           signalled  only  by  a form  feed  in  the  file, for
           variable-length pages.  This is true only if BMAR≠0.)
  XGP      The  first page  of  the file  is taken  as  font and
           margin  commands,  preceded  by  slashes  as  in  the
           command line.  Only the special XGP  spooler switches
           (the  ones  in  this  table)  are  allowed.  Carriage
           returns are ignored.  If  the first page of  the file
           is a TV/E directory, the second page is used  for the
           commands.  The command  page is not printed.   A file
           extension of .XGP also invokes this feature.
  NOXGP    Turns off /XGP.
  XLINE=n  Set the minimum interline spacing to n scan lines.
  NTNODE=n Set the number of text nodes allocated by the monitor
           (see below).
  NVNODE=n Set the number of vector nodes allocated.

Text nodes and vector nodes are units of core storage allocation used
by the monitor's XGP service routines.  Generally, you need not worry
about them, but if you  have trouble printing a complex  document the
Appendix 3                                                SPOOL    99


allocation control switches  may be able to  help you.  See  a system
wizard to find out.

The  /XGP  switch,  when   present,  turns  off  the   usual  default
assumptions  about other  switches;  in particular,  /HEADING  is not
assumed unless it is explicitly used.  Spooling a file with extension
.XGP implies a default of /NONUMBER as well as /XGP.

More peculiarities:

If any FONT select switch specifies some font number other than 0, no
/HEADING switch will be assumed unless it is explicit.

Page  headings will  occur in  font#0.  Whatever  font was  in effect
before  the  heading  line  will  be  reinvoked  before  any  further
processing.  The title page, if present, will be made in font#0.
Appendix 3                                                SPOOL   100


                           QSPOOL Command


The QSPOOL command starts the SPOOL program in a special way.  QSPOOL
reads the directory of  [SPL,SYS] and interprets the contents  of the
SPX and  XSP (spooler command)  files.  Essentially, it  displays the
queue of files to be printed.

The commands QSPOOL/LPT and QSPOOL/XGP will list spool  requests only
for the indicated device.

The queue  is based on  a priority scheme.   The priority of  a spool
request is determined by
  (time in minutes since spool request, +1) / (file size in records)

Requests are processed in the order of decreasing priority.

The QSPOOL command may be given without logging in.



                           UNSPOOL Command


UNSPOOL is a  monitor level command  that invokes the  program SPOOL.
If you run UNSPOOL, it will display all the spooler requests that you
(your PPN)  have requested, and  it will allow  you to delete  any of
them.  If you delete a request which hasn't been seen by the spooler,
then nothing special  happens since the spooler  is not yet  aware of
the command, so it won't  be missed.  If it happens that  the spooler
is already  processing your  commands, then  the listing  in progress
will be purged.

If you  log in  as SPL,SYS  and run  UNSPOOL, then  not only  are you
allowed  to purge  any command  file that  is either  in  progress or
pending but you also can change the spooler behavior in the following
ways:

1. You can cause the present listing to be purged.
2. You can cause the present listing to be started over.
3. You can cause  the spooler to hold  the queue and release  the LPT
   immediately before starting the next file.
4. You can release the queue from the state induced by holding it.

The commands UNSPOOL/LPT and  UNSPOOL/XGP will list and  delete spool
requests only for the indicated device.  Also, if you run UNSPOOL and
give  the  monitor  REENTER  command,  it  allows  you  the  extended
capabilities described above for the SPL,SYS user.
Appendix 4                                                 MAIL   101


                             APPENDIX 4

                                MAIL




This  appendix  describes  the  use  of  the  MAIL  and  SEND monitor
commands, which are used to send messages to users.  The SEND command
sends the  message to the  user's terminal, if  he is logged  in, and
optionally may also  (or instead, if he  isn't logged in) send  it to
him as MAIL, so it will be seen on login.  The next section describes
the REMIND  command, for  automatic delayed  messages, and  the LATER
command, for automatic  delayed program execution.  Finally,  the RCV
command for editing mail files is described.

The  information   in  this   appendix  is   taken  from   the  files
MAIL.BH[UP,DOC] and RCV.BH[UP,DOC], the manuals for the MAIL  and RCV
programs.



                MAIL, SEND, GRIPE, and PLAN Commands


The basic format of the MAIL command is

MAIL <switches> <destination list> <message>

and that of the SEND command is

SEND <switches> <destination list> <message>

Another command, for complaining about system bugs, has the format

GRIPE <message>

This is a version of MAIL which is directed to a special system area.

Finally, there is the  special-purpose PLAN command, which  creates a
file intended to  describe your projected whereabouts,  travel plans,
etc. to other  users who may  look for you  while you are  away.  The
format is

PLAN <message>

Unlike the other MAIL  commands, PLAN creates a file  containing only
the message  in the  command rather  than adding  the message  to any
previously created messages.  Also,  if you use a null  message, your
Appendix 4                                                 MAIL   102


plan file is deleted.  The plan files are read by the  FINGER program
(see page 57).

The /D switch can  be used with MAIL,  SEND, or REMIND.  It  causes a
list of the destinations specified by the command to be added  to the
message as its last line, preceded by "CC: ".  If a distribution list
file is used  (see below), both the  file specifier and  the contents
are included.  Note: all  specified destinations are listed,  even if
invalid.

The /A (append)  switch can be used  with the MAIL command  only.  It
means  that the  message you  enter should  be appended  to  the most
recent earlier message  from you (i.e., from  a user with  your login
programmer name) to each recipient.   If there is no such  message, a
new message will be created as if /A had not been used.

The /T (Tenex, or Topic)  switch, used with the MAIL  command, allows
the inclusion of a "subject"  line in the text of the  message.  This
switch is meant to be  used with ARPA network mail, and  is described
more fully in the section of this appendix on ARPA mail.

There are three mutually  exclusive switches which may  optionally be
used  with the  SEND command.   All  have to  do with  the  option of
mailing  messages.   Normally,  SEND  will  just  send   messages  to
terminals of logged-in users (at all terminals where logged  in), but
if a  destination of  the form PRG  (see the  next paragraph)  is not
logged in anywhere, the user will be given the option of  mailing the
message to that prg  instead.  The switches /Y  for yes or /N  for no
will assume that response whenever the situation arises.   The switch
/M for mail will always mail to all destinations on the list  as well
as sending to their terminals, even if they are logged in.

Another switch used with SEND  or MAIL is /W, for where,  which lists
on the  user's terminal  the ppn,  job number,  job name,  queue, and
terminal number of all (logged in) recipients of the message.

The destination list  for MAIL can  be just *  , which will  send the
message  to the  file NOTICE.TXT[2,2]  so all  users will  see  it on
login.  Otherwise, it is one or more project and/or  programmer names
separated by commas.  The elements of the list should be in  the form
PRG or [PRJ,*] or [PRJ,PRG] . Any PRJ or PRG can be a dot (.) to mean
the same  as the  user's project  or programmer  name (real  ppn, not
alias).  List elements may  also take the form  @<file specification>
(default device DSK, default extension DIS as in  DIStribution list);
the specified file will be read  and will replace the @ field  in the
command.  (Note: if the file specification does not give  an explicit
extension, the given file name with no extension will be tried before
the default  extension given above.)   If such a  file contains  an @
field, the newly specified file will be read and the remainder of the
Appendix 4                                                 MAIL   103


old file,  if any, will  be ignored.   The DIS file  may have  a TV/E
directory and/or SOS  line numbers, which  will be ignored.   The DIS
file may have any number of lines; destinations are separated  by any
combination of  returns, linefeeds,  spaces, and  zero or  one comma.
Lines in  the DIS  file may contain  comments started  by semicolons,
which will be ignored up to  a return; note that this is not  true of
the command line typed at the terminal!  In the @ file specification,
the notation [PRJ] may be used to mean [PRJ,.].  The notation ↓chars↓
may be used  to include non-alphamerics in  a file name.  To  make it
easier to refer to mail  files as messages (see below),  the filename
scanner  will  also accept  "filenames"  of  the form  ∂  or  ∂PRG or
∂PRJ,PRG or ∂PRJ, or ∂PRJ,*.  The first case uses your own  logged in
programmer name, as does the ∂PRJ, form.  These imply device DSK, and
default extension MSG and ppn [2,2], although extension or ppn can be
specified explicitly.

The MAIL command also allows the use of destinations at  foreign ARPA
network sites.  This  facility is described  in detail later  in this
appendix.

MAIL will  also send messages  to an arbitrary  file of  your choice;
this feature  may be  used, for  example, to  maintain a  diary file.
Only  one such  destination may  be used  in a  single  MAIL command,
although  other,  standard  destinations  may  be  used  in  the same
command.  If the desired output file already exists, you  may specify
whether you want the message added at the beginning, as  for standard
mail files, or at the end.  The destination syntax is :<file> for the
beginning, or &<file>  for the end. The  file must be on  device DSK.
Any filename may be used,  as in the @ syntax; the  default extension
is .MSG  and the default  PPN is your  current alias.  All  the usual
switches  may be  used,  except that  /A  does not  affect  a &<file>
destination.

If  there  is a  file  named  OUTGO.MSG in  your  (login,  not alias)
directory, MAIL will save your  message at the front of that  file as
well as mailing it  to the specified destinations.   The distribution
list will  be included in  this file  whether or not  you use  the /D
switch.

If you do not  know the programmer name for  a user, you can  use his
human being type name instead (first or last name).  The name will be
found in the  file of authorized users,  if it is present  there, and
you will be told the  programmer name for that user to  encourage you
to use it  in the future  (it's faster).  If  there is more  than one
user with the name you give, it tells you all the relevant programmer
names and invites you to try again.

For the SEND command, there are several special forms of destination:
a job number, the device name of a terminal followed optionally  by a
Appendix 4                                                 MAIL   104


colon, *  (sends to  all logged-in  users), and  ARPA* (sends  to all
users logged in via the  ARPA network).  Any of these  special forms,
if used, must be the only destination specified.

The message part of the command may be a one-line message, which will
be sent as is;  an @<file specification> (default extension  TXT); or
null, in  which case  the program will  request a  multi-line message
from the user.  Any TV/E directory, SOS line numbers, and  form feeds
in  a message  file will  be ignored.   If you  start typing  a short
message on the command line,  and decide you need more than  one line
after all, you can end the command line with <lf> instead of <cr> and
you will be allowed to continue the message.

When entering a multi-line message from a Stanford  display terminal,
you  can edit  the message  with E  automatically, and  then continue
sending  the  message,  by  typing  <control><meta>E  (anywhere  in a
message text line).  The message will be saved temporarily in  a file
named MAIL.TXT  on your (alias)  PPN, and E  will be  started editing
that file.  When the message is complete and ready to send,  type the
E command <control>X RUN which will restart MAIL, sending the message
and deleting the MAIL.TXT file.

Messages can only be  sent to real terminals, or  to pseudo-teletypes
which are connected to the IMP (ARPA users).  This  excludes detached
jobs and  non-ARPA PTYs.   SEND *  sends only  to those  terminals at
which someone is logged in.

When a message is sent to a display terminal (III or Data  Disc), the
MAIL program tries to determine whether the recipient is running some
program,  such   as  E,  which   changes  the  normal   page  printer
positioning,  thereby making  it possible  that the  message  will be
lost.  If it finds anything unusual about the page printer,  it warns
the sender of this in a message including the ppn, job name,  etc. of
the recipient  as in the  /W output.  The  sender may choose  at this
point to REENTER and change the SEND to MAIL.  (The  REENTER facility
is explained below.)  SEND * does not type out these warnings.

Mail can only  be sent to  defined users, i.e.,  there must be  a UFD
matching the destination  prj and/or prg names.   The mail is  put in
the front  of the file  <ppn>.MSG[2,2].  If the  mail is sent  to all
users via MAIL *, the program also scans the old NOTICE.TXT[2,2] file
as it copies  it, and deletes any  messages more than two  weeks old.
Also, TV directories  and SOS line numbers  are deleted from  the old
messages in this case.

Another special feature of MAIL  * is that an expiration date  may be
specified for the message.  The format is

MAIL *→ <date> <message>
Appendix 4                                                 MAIL   105


where <date> can be in any of the date formats allowed for the REMIND
command  (see  next  section), except  that  wildcard  dates  are not
allowed and only the date (no time) may be specified.  The date given
is the one  on which the  message will be  deleted, i.e., it  will be
seen  last  on  the  previous  date.   This  expiration   feature  is
implemented by including the  expiration date in the  message header,
and  entering  (as  with  the LATER  command  described  in  the next
section)  a request  to run  the program  EXPIRE.DMP[RMD,SYS]  on the
specified date.   This latter program  deletes any  expired messages.
This implementation is described because the CANCEL command (see next
section) will list the request for the EXPIRE program, so  you should
expect  that if  you  use this  feature.   If no  expiration  date is
specified, the message is still eligible for deletion after two weeks
as described above.

The check  for a  file directory  for the  specified user(s)  is made
before the program asks for  the message if the multi-line  option is
used.  If there are no valid destinations, the program  exits without
doing anything  else.  If  any destinations  are valid,  however, the
program asks if you  wish to continue, and  if so it continues  as if
only  the valid  destinations were  specified.  (Exception:  The list
provided  by  /D  includes  all  specified  destinations,   valid  or
invalid.)  The special case of a command like SEND PRJ,PRG where what
is meant is SEND [PRJ,PRG] will be caught if PRJ is not the name of a
programmer, and  the (probable)  desired effect  is simulated  with a
warning message given.  Note: in the case of SEND, you will be warned
if a destination  user is not logged  in.  Unlike the message  for an
invalid destination, this warning  does not require you  to reconfirm
your desire to continue. After you finish typing in the  message, you
are  again  notified  of  not-logged-in  destinations   as  described
earlier.

There is actually a way not-logged-in users can get messages  sent by
SEND: it  is possible  to declare  a particular  terminal to  be your
"home"  terminal  for  SEND  purposes.  If  you  have  a  file called
OPTION.TXT[1,prg] which includes a line of the form  SEND:number then
if someone sends you a message with SEND and you are not logged in, a
message  will be  typed  on the  tty  specified by  the  above number
indicating that the  message is coming, and  it will be mailed  as if
the sender had said SEND/Y.   You can read the message by  saying RCV
prg.   You need  not be  logged  in to  do this,  but if  you  are it
destroys your core image.  If the message is sent to [prj,prg] rather
than prg, it looks for OPTION.TXT in [prj,prg] rather than [1,prg].

When a message is MAILed by the MAIL command (not SEND/M, etc.)  to a
user who  is logged  in, a one-line  notice is  sent to  his terminal
indicating that  mail has  arrived.  This  also applies  to mail-only
reminders (see REMIND/M, next section).

A sample command is
Appendix 4                                                 MAIL   106


MAIL BH,@FOONLY,[S,*] TEXT OF MESSAGE

which will  send the  message TEXT  OF MESSAGE  to ↓    BH↓.MSG[2,2],
↓  S   ↓.MSG[2,2], and whatever users are listed in FOONLY.DIS in the
user's disk area.

Spaces may be used in all reasonable places in the command.   For the
benefit of any weird people who want to start messages with  a comma,
there is another syntax in which the destination list is  enclosed in
parentheses.  In this  case spaces may separate  destinations instead
of commas if you  want.  This syntax is  also handy for SENDing  to a
numeric  programmer  name (otherwise  it  would be  considered  a job
number) and similarly useless things.

There  is an  error  recovery feature  for  people who  type  in long
messages, only to  discover that because of  a typing error  they are
trying to send it to a non-existent destination or something; to wit:
If,   at    the   end   of    a   multi-line   message,    you   type
<ctrl><meta><altmode> instead of <ctrl><meta><linefeed>,  the message
will  not  be transmitted.   Instead,  the original  command  will be
loaded into your  line editor, and you  can correct and  re-enter it,
but if it does  not include a message,  the old message will  be used
instead of asking for a new one.  Also, the same effect can be gotten
by giving a  monitor REENTER command after  the program exits  or you
<call> out of it.  From  a non-display terminal, of course,  the line
editor feature is not available, but you can still REENTER and retype
the command line.  Note:  this reenter facility only works  after the
message has been completely entered;  do not <call> in the  middle of
typing  the  message  and   reenter,  finish  the  message   and  use
<ctrl><meta><altmode>   instead.   If   the  original   command  line
contained text ending with a <lf>, for the continued message feature,
the text  loaded into  the line  editor will  not include  that text;
therefore,  the entire  multi-line message  will be  used as  the new
message if you do not add any text on the command line.



                 REMIND, LATER, and CANCEL Commands


The REMIND command is used to tell the MAIL program to send  and mail
your message at a specified later date and time, possibly repeatedly.
The basic syntax is

REMIND <switches> <destination list> <datime> <count> <message>

The allowable switches are /S for send only or /M for mail  only.  If
neither is used, the message is both sent and mailed.  /D may also be
used, as in MAIL or SEND.
Appendix 4                                                 MAIL   107


The destination list  and message fields  function like those  of the
MAIL  command,  as  described  in  the  previous  section.   Reminder
recipients must be users known to the system, i.e., they must  have a
UFD.  The destination  field may be omitted,  in which case  your own
programmer name  will be used  as if the  destination field  were the
character "."; NOTE, however, that some forms of datime  (those which
start with a letter) could be confused with destinations, and  if you
want to use such a form there must be an explicit destination.

The datime field  may specify a date,  a time, or both.   The formats
allowed for dates are illustrated here:

  4/28/75     28-APR-75   APR 28, 75
  4/28/1975   28-APR-1975 APR 28, 1975
  4/28        28-APR      APR 28
  4/28/*      28-APR-*    APR 28, *
  */28        28-*        +3
  WED         WED*        W           W*

The forms without a year imply this year unless the date is  today or
earlier, in which  case next year is  used.  Letters may be  upper or
lower case; all after the  first three are ignored.  The days  of the
week  have,  for  convenience, the  single-letter  names  familiar to
Farmers'  Almanac  readers and  former  MIT  students: M,T,W,R,F,S,D.
Asterisk as a  month or year is  wildcard; note that forms  like */28
expire  at the  end of  the  current year.   WED* and  W*  mean every
Wednesday.  The +3 form is the number of days later than today, i.e.,
three days  from now.   Spaces may  generally be  used or  omitted as
desired except within a word or number, except for the APR  28 forms.
Certain mixed notations such as 4/28, 1973 may work, or they may not.
If only a time field is used without a date, today is  assumed unless
the  time is  already  past, in  which  case tomorrow  is  used.  The
weekday forms always imply a day between one and seven days  from now
as their first or only  instance, never today.  Here are  the formats
for times:

  1423        223pm       223p
  14:23       2:23pm      2:23p
  0223        223am       223a        223
  02:23       2:23am      2:23a       2:23
  2           2am         2pm         2a
  +2:23       +2:         +:23        2p

A date without a time means midnight.  The relative forms may only be
used without a date.  Letters may be upper or lower case.   There may
be spaces on either side of a colon, but NOT between the time and the
am or pm!  To  use both a date and  a time, they must be  enclosed in
parentheses and  separated by  spaces: (WED 3am).   A time  without a
date may be followed by  an asterisk (*), in which case  the reminder
will be sent every day at the time specified.
Appendix 4                                                 MAIL   108


The optional count field is  used to specify the number  of instances
of a repeated  request.  The format is  #<number>.  If none  is used,
#50 is assumed (the number is decimal).  The form #∞ may be  used for
requests  which are  to live  forever, but  please don't  leave these
around after you go away....

When a reminder  which is sent  more than once  is sent for  the last
time because its count expires, a warning to that effect  is appended
to the text of the message.   This does not apply to a  message which
is not rescheduled because of the specified datime, such as a date of
*/10 which expires at the end of the year.

Here are sample commands:

REMIND . (WED* 2:45P) #30 Go to 3:00 class!!
Remind me, sir, to monitor your computer usage.
REMIND * APR 15,* LAST DAY TO FILE INCOME TAX RETURNS

The messages will be both sent and mailed at the target  time, unless
/S or  /M is  used to  specify send-only  or mail-only.   The message
header  will  say "(reminder)"  to  distinguish it  from  an ordinary
message.   All the  features of  MAIL work  here, like  @  fields for
destinations  or  messages,  REENTER,  etc.   There  are   the  usual
syntactic  ambiguities which  are not  expected to  affect  anyone in
practice: if the first nonblank after the command name is a digit, it
is taken  as part  of the  datime field  in REMIND,  as opposed  to a
programmer name in MAIL or a job number in SEND.

Since  the structure  of the  reminder queue  is rather  sensitive to
incorrect  date  and  time information,  the  current  date  and time
according to the monitor  are checked for reasonableness  against the
reminder  file.  If  they are  considered unreasonable,  no reminders
will be  accepted or delivered  until the system  has been up  for at
least five  minutes.  (Hopefully  by then an  incorrect date  or time
entry will have been noticed and corrected.)

The LATER command is used to cause delayed execution of  an arbitrary
program.  The format is:

LATER <filespec> <core> <datime> <count>

in which datime and count are as in the REMIND command.  The filespec
determines the program to be run; the default device is DSK (the only
other  device allowed  is  SYS), and  the default  extension  is DMP.
Note: if no ppn is specified,  the ppn used is your disk  ppn (alias)
at the time  the command is entered!   The delayed job is  given your
logged-in ppn as its logged-in ppn regardless of the ppn of  the dump
file.  It  is run  with JLOG  off, i.e.,  it is  killed if  any error
condition arises.  The optional  core argument, if used,  is enclosed
Appendix 4                                                 MAIL   109


in angle brackets.  It may include an initial core  allocation and/or
a starting address offset, in the form <3K,+1>.  The subarguments may
be in  either order, and  must be  separated by a  comma if  both are
used.   The core  allocation  argument is  in decimal  units  of 1024
words, and the starting address offset is in octal words.  If  no job
slots are available at the time the job is to be run, it is not done;
therefore, if you are depending on the result you should schedule the
job for  non-prime time.   (If there is  no job  slot for  the REMIND
phantom itself, it  will try to schedule  your job as soon  after the
given time as it is itself run, but it will only try once.)

The monitor  command CANCEL will  run a program  which will  list and
selectively delete reminder requests from or to you, or  all requests
if you are logged in as [RMD,SYS].  This program can also be  used to
list requests without asking  whether you want to delete  them: after
the  first request  is listed,  type the  letter L  in answer  to the
deletion question and any  remaining requests will be  listed without
interruption.  LATER requests are also listed and deleted by CANCEL.



                     MAIL to ARPA network hosts


The  MAIL command  allows mail  to  be sent  to users  at  other ARPA
network sites.   (This service  is not  available to  network guests,
sorry.)

Since the "@" character was already used in MAIL to specify a file to
be read for command arguments,  the character "%" is used  to signify
ARPA site names, e.g., BH%SU-AI not BH@SU-AI.  Site names  can follow
a user name, as above, or can be used alone (followed by a  space) as
a "sticky" site:

MAIL %MIT-AI RG,TK,MINSKY,BH%SAIL,PAPERT

will send the message to RG, TK, MINSKY, and PAPERT at MIT-AI, and to
BH at SAIL.  (Of course, if SAIL is used as the site name the mail is
not actually sent through the network!)

User  names  for  foreign hosts  can  be  of  (essentially) arbitrary
length.  If the name is a string of letters and digits  starting with
a letter, it can simply be typed as is: TEITELMAN % MAXC for example.
(The case of letters is preserved, in case it matters to  the foreign
host.) If the  user name contains  characters other than  letters and
digits, or  starts with a  digit, enclose it  in quotes (")  with two
quotes used to represent a single quote if necessary.  The  host name
cannot contain  any special characters  except hyphen.   Partial site
names are  recognized as  in our  TELNET and  FTP programs.   Also, a
decimal number may be used instead of a host name if necessary.
Appendix 4                                                 MAIL   110


If  the destination  list in  a MAIL  command includes  PPNs  at SAIL
(which must be enclosed in  square brackets), SAIL is assumed  as the
destination host and should not be specified explicitly, e.g.,

MAIL %AI [1,BH],TK

mails to TK at MIT-AI and [1,BH] at SAIL.  To mail to a PPN somewhere
else, you must say, e.g.:

MAIL "[N900AR00]"%CMU

The outcome of an attempt to send network mail is reported to you, in
a format somewhat like SNDMSG in TENEX.  The possible outcomes are

USER at SITE -- ok
USER at SITE -- refused
USER at SITE -- queued
USER at SITE -- failed

The first case means that the mail was successfully sent.  The second
means that the network connection was made successfully but  the MAIL
command was rejected, possibly because there is no such user  at that
host.

Network mail will be  queued if it cannot  be sent when you  make the
request (remote host  down, etc.) The mail  is queued via  the REMIND
phantom.  The status report  from the MAIL command is  "queued".  The
mail will be retried at  three-hour intervals for three days.   If it
is sent successfully, or if the three days run out and the request is
deleted, you will receive a status report from the REMIND phantom, in
the form of a reminder from yourself saying

ARPA network mail to USER at SITE -- ok

if successful, or

ARPA network mail to USER at SITE -- expired

if not.  The date and time  in the header of this status  report will
be  the  time when  the  message is  actually  sent  successfully (or
deleted).  The date and time in the header of the message sent to the
remote  site  is the  time  when  you originally  tried  to  send the
message.

It is also possible to get a status report saying

ARPA network mail to USER at SITE -- refused

if the connection to the remote host is made but the host refuses the
Appendix 4                                                 MAIL   111


mail.   This  status  report  will  also  include  any  error message
returned to us by the remote host.

It is possible  to get a "failed"  status report from a  network MAIL
command if the program is  unable to enter the request in  the REMIND
queue, for instance because there are no job slots available  for the
phantom.  In this case you must try again later yourself.

If a message which was typed in (i.e., not from a @FILE construction)
returns either a queued or a failed response, the text of the message
is saved in a file FAILED.TXT in your (alias) directory.  This should
not  be necessary  for  queued mail,  which will  eventually  be sent
automatically if possible, but is necessary for failed and reassuring
for queued.  The file contains the message as typed, i.e.,  no header
of either internal or external format, and no space added in front of
each line.  If the file cannot be entered (e.g., you are aliased to a
write protected directory), nothing special is done, but if  the file
is written successfully you are so informed.

The CANCEL command lists ARPA  mail which you have queued  and allows
you to abort the request.  The listing by CANCEL contains the text of
your message  and the name  of the addressee,  but lists his  site by
number rather than by name.  It also specifies the number of attempts
remaining before the request will be deleted.

Usually if the  mail is refused,  and possibly otherwise,  the remote
host will send us error  messages intended to be helpful to  you.  If
any such messages are received which are not part of the  normal MAIL
sequence, they are typed out along with the status report.   Thus you
can hopefully figure out why the mail was refused.

Mail to foreign hosts  is prefixed with a TENEX-ish  header including
your real name, if known to  the system, and your net address  (PRG @
SU-AI).  Thus recipients should be  able to figure out how  to reply.
The header contains a "To" line with the names of all destinations as
you typed them, and  the full names of  all sites.  This line  can be
eliminated from the header by using the /N (No to line) switch in the
MAIL command.

Distribution  list files  as in  MAIL @FILE  can,  naturally, include
network  destinations.  The  /D switch,  which includes  the  list of
addressees  in the  message,  includes network  addressees,  as typed
(e.g., with abbreviated site names if that's what you typed).
Appendix 4                                                 MAIL   112



For  those  misguided  souls  who  want  their  network  mail  to  be
compatible with the TENEX READMAIL program, it is possible to include
a subject line in  the message header by  using the /T switch  in the
MAIL command (for  Tenex, or Topic if  you like).  This  switch takes
the first line of  text in the message  as the subject line  and also
forces multi-line input (as if the command line ended with lf instead
of cr). Thus the input command

MAIL/T TESLER%MAXC Horrible PUB problem
I tried to run PUB and this is what happened:...
 ...
<control><meta><lf>

will produce a message like this:

Date: 29-Sep-74  1:55 PM
From: Brian Harvey (BH @ SU-AI)
Subject: Horrible PUB problem
To:   TESLER @ PARC-MAXC
- - - -
 I tried to run PUB and this is what happened:...
  ...
-------

If the text input is from a file, the first line of the file  will be
used as the  subject.  If local  (SAIL) destinations are  included in
the command, the message as received locally will be:

∂29-Sep-74  1358                1,BH
 Subject: Horrible PUB problem
 I tried to run PUB and this is what happened:...
  ...

If a network mail attempt fails and a FAILED.TXT file is  written, it
will contain:

Horrible PUB problem
I tried to run PUB and this is what happened:...
 ...

A later command of the form MAIL/T TESLER%MAXC @FAILED will therefore
do the right thing.

If a network mail attempt fails and is queued, the message  as listed
by the  CANCEL command will  not contain the  subject line,  but it's
really there, fear not.
Appendix 4                                                 MAIL   113


                             RCV Command


The  RCV  program allows  MAIL  messages to  be  selectively deleted,
listed,  or  saved  as  desired.  The  program  is  called  by simply
entering  the  monitor command  RCV.   All mail  files  which  can be
construed as being for you  are offered for your perusal; if  you are
logged  in  as  [PRJ,PRG],  mail  files  for  PRG  or  [PRJ,PRG]  are
automatically listed; mail  files for [PRJ,*] or  [otherproj,PRG] are
announced if they exist and you are asked whether or not you  wish to
edit them.  It is also possible to edit other users' mail  files with
RCV by giving an argument, e.g., RCV BH; this argument can be  PRG or
PRJ,PRG or PRJ, or any of those inside brackets.  In this  case, mail
for  PRG,   [PRJ,PRG],  or  [PRJ,*]   respectively  will   be  listed
automatically,   and   you  will   be   asked   about  [anyproj,PRG],
[otherproj,PRG]  (or just  PRG), or  [PRJ,anyprog]  respectively.  If
there is a message file exactly matching the argument (or your prg if
no argument), it will be  edited before any other files.  RCV  * will
edit NOTICE.TXT[2,2].

RCV also  allows editing  of the  files created  by the  news service
automatic notification feature; you are asked whether or not you want
to  edit  such  a file  addressed  to  the user  whose  mail  you are
examining if it exists.  The command RCV \ (or RCV \arg) will examine
these notices first.

It is also possible to use  RCV on files not in [2,2] (such  as saved
message files previously created with RCV) with a command like:

RCV #filespec

with  default  of  DSK:SAVED.MSG  in  your  (alias)  disk  area.  The
conventions given below for output file specs also apply here.

Finally, an  argument of the  form ?PRG will  type the plan  file for
user PRG, if there is one.   In this case, the file is  merely typed,
not edited.

** NOTE: ONCE RCV HAS OPENED A MESSAGE FILE, YOU SHOULD EXIT ONLY **
** BY TYPING "E" TO AN OPTION REQUEST, AS EXPLAINED BELOW. TYPING **
** <CALL> TO EXIT MAY RESULT IN LOSING SOME OF YOUR MESSAGE TEXT! **

When a mail file is opened, messages are typed out one at a time, and
for each message  you may select  several processing options,  in the
format

<options> [ <space> <filename> ] <cr>

where  the [...]  represents an  optional argument.   Each  option is
Appendix 4                                                 MAIL   114


represented by a letter; more than one may be used, except that a few
options must  be used  alone, as  noted below.   The filename  may be
specified if  you select the  C (copy) or  T (transfer)  option.  For
help  in specifying  a file,  use ?  as the  filename.  Here  are the
option letters which select a final disposition for the message:

  S        Save the message in the mail file.
  D        Delete it (ignored if any other option also specified).
  T        Transfer it to a file of your choice.
  C        Copy it to a file.  Like ST combined.
  L        LPT spool it.
  X        XGP spool it.
  K        Transfer it to the file LOGOUT.MSG, which will be typed
           automatically when you log out (KJOB).

If  none  of  the  above  are  used,  the  message  will   be  Saved.
Combinations may be used, e.g., LS will spool the message on  the LPT
and also save it in the  mail file.  Along with any of the  above (or
alone, implying S) may be  used at most one of the  following editing
options:

  A        Append to the message from the terminal.
  Z        (Stanford displays only) Edit the message line-by-line
           using the system line editor.  If you need help with
           this facility, type <control><meta>? after entering the
           line editing mode.
  M        (Stanford displays only) Modify the message by running
           the text editor, E, with that message as its input.
           Return from E by typing <control>X RUN.

Along with  any of  the above, or  alone, can  be used  the following
option letters to avoid seeing more messages:

  E        Exit, and enter spooling requests from L or X options.
  N        Go to the Next mail file, e.g., mail for your
           [PRJ,PRG] if any.

E and N do not prevent deletion, i.e., DE will Delete the message and
Exit.  If the message was longer than the amount RCV types out before
asking for option  requests, the following  option may be  used along
with any others specified:

  Q        Quiet processing; do not type the remainder of the
           message while processing it as usual.

Note:  E  or  N  with  no  other  options  implies  Q  automatically.
Alternatively, any of the following  may be used as the  only option,
for special processing:
Appendix 4                                                 MAIL   115


  P        Postpone the decision for this message.  This applies
           only if the message was longer than the amount RCV
           types before asking for options, and you wish to see
           the rest of the message before choosing options.
  ?        Type this option list.

Spooling requested  by L or  X is  not done until  RCV is  exited (by
typing E  to an  option request, or  by running  out of  input).  The
default filename for C and T is DSK:SAVED.MSG in your alias area, but
if  you  type a  filename,  its device,  extension,  etc.  become the
defaults for  any later  selection.  If you  are confused  about your
default output  file, type  ? instead of  a filename.   Filenames may
only be given along with a C or T option; if C or T is used without a
filename the previous file  is continued.  (The first time,  you will
be asked for a filename, which may be simply <cr> for SAVED.MSG.)

If you  use an  argument in the  RCV command  to edit  another user's
mail, the  first time  you specify  any option  which would  remove a
message from  the mail file  or alter its  contents you are  asked to
confirm it.  Once you have confirmed such an option, however, you are
not asked again.

There are two options  provided at Stanford displays for  editing the
text of a message.  The M  option writes the message in a  disk file,
QQRCV.TMP,  and runs  the E  editor, which  allows  great flexibility
because of  E's powerful editing  capability.  However, it  is rather
slow, because all of  RCV's internal information and all  the message
files must be  saved on the disk.   For minor corrections to  a short
message,  you may  prefer the  weaker but  faster  editing capability
provided in RCV itself by  the Z option.  If you select  that option,
the lines in your message will be presented to you one by one in your
terminal's line  editor.  You  may edit each  line, using  the normal
line editor commands, and type  <cr> when done with a line.   You may
also type the following special characters (α means control,  β means
meta):
Appendix 4                                                 MAIL   116


  α<cr>    Accept the current line as it now appears in your line
           editor buffer and stop line editing, accepting the rest
           of the message as is.
  αβD      Delete the current line.
  <alt>    Undo the changes in this line, loading a fresh copy
           into the line editor.
  αβ<cr>   Accept lines to be inserted before the current line,
           until an inserted line is terminated with α<cr>
           instead of <cr>, or <alt> is typed at a blank line.
  αβI      Same as αβ<cr>.
  αD       (at the end of a line) Combine this and the next line
           and load the combined line into the line editor.
  β<cr>    Break the line at the cursor, accepting the text to
           the left of the cursor as it stands and editing the
           remaining text as a new line.
  αβA      Leave line edit mode, as for α<cr>, but accept text
           from the terminal to be appended after the existing
           text, as if the A option had been selected.
  αβ?      Type this list.

Blank lines are not presented for editing in the Z option.  In both M
and Z  options, the initial  header line is  not edited, nor  are the
spaces at the beginning of each text line in the message.

The first time you  specify C or T, you  are asked to specify  a file
name if one was not included in the option line. You can reply with a
standard file  spec, ?, or  <cr>.  <cr> uses  the default  file name,
initially DSK:SAVED.MSG in your (alias) area.  ? will print a helpful
message  and  let  you  try  again.   Thereafter,  whatever  file you
specified will  be used for  all C  and T messages  (the file  is not
closed until you exit or select another one) until you specify  a new
file name along  with a C  or T option  as described above.  The file
which was open for C and T messages provides default  extension, etc.
for the  new request,  e.g., if  the first  time around  you selected
MAIL.FOO[S,SYS], if you then type C MOBY you will get MOBY.FOO[S,SYS]
rather  than MOBY.MSG  in  your area.   Note: if  the  specified file
already exists, the new messages are added at the front.

The notation ↓chars↓ may be used to get non-alphameric  characters in
a  filename.   In  addition, a  shorthand  notation  is  provided for
entering  names  of mail  files:  if  the character  ∂  is  the first
character of the file spec, then the device becomes DSK,  the default
extension MSG, and the default ppn [2,2].  (The extension and ppn can
be changed later in  the filespec.)  If the next  non-blank character
is  not  alphameric,  the  filename  used  is  ↓   prg↓,  i.e.,  your
programmer name right  adjusted.  (Note that  this is your  own login
name, not the  name whose mail you  are editing.)  You can  specify a
different name with the formats  ∂prg , ∂prj,prg , ∂prj,* ,  or ∂prj,
(the latter uses  your own programmer  name along with  the specified
Appendix 4                                                 MAIL   117


project name).  Any of these may be followed by .ext and/or  [ppn] to
change the default values as described above.

RCV has a fairly small  message buffer.  If a message is  longer than
that buffer, seeing the first  few lines of the message may  tell you
enough about it to decide how to process it without seeing  the rest.
Therefore, in that case, you will see as much as fits, followed by an
overflow notice and an  option request.  After you enter  the desired
options, the remainder  of the message will  be typed as it  is being
processed, so you may safely use the Delete option and you will still
see the  rest of the  message.  If you  want to avoid  this continued
typeout, type  the letter  Q (for Quiet)  before your  option choice,
e.g.,  QD for  Quiet Delete.   Q is  only recognized  when  a message
overflows.  If you  select E or  N with no  other options, you  get Q
automatically.  If this is not what you want, type, e.g., SE.  If you
wish, you  may postpone the  decision on how  to process  the message
until after seeing the rest of it, by typing P to the option request.
This  will  type the  remainder  of  the message  and  ask  again for
options.   QP  is  illegal,  and  P  is  only  legal  when  a message
overflows.

RCV may be  run when not logged  in, with an argument  specifying the
mail files to be edited; however, the messages may only  be examined,
not modified--the message files are simply listed without  asking for
processing options.  In  this case it is  safe to use <call>  to stop
reading messages, but please remember  that you must kill the  job if
you <call> out of it lest it stay around forever!

There are two special options available in RCV, for reading  the A.P.
news digest  and for  editing messages sent  with the  GRIPE command.
These options are provided when  the RCV command is given  without an
argument, if you have an OPTION.TXT file with a line of the form

RCV:DIGEST,GRIPE;       (either order, or either one alone, is ok).

The GRIPE  option is  intended for system  wizards, while  the DIGEST
option is good for people with both DIGEST and NOMAIL in  their LOGIN
options.   You are  asked  Read A.P. digest? or  Edit gripes?  if the
appropriate files exist.

For use at non-Stanford terminals, RCV has a mode in which it accepts
tty input in SOS  representation (see Appendix 13).  The  main reason
for this  is to  allow ?* instead  of ∂  for redirecting  messages to
another mail file, but it can also be used with the append  option to
allow  appending  upper/lower  case  text  from   an  upper-case-only
terminal.  The following notes apply:

1.   When  RCV is  started,  it decides  whether  or not  to  use SOS
representation  on the  basis  of the  FCS (full  character  set) bit
Appendix 4                                                 MAIL   118


maintained for each terminal by the monitor.  This bit is set  by the
TTY FULL  command (or  ESC F at  a Stanford  display) and  cleared by
TTY NO FULL (or BREAK F).

2.  Whenever  RCV reads an  altmode character from  the tty,  it will
enter SOS mode and otherwise  ignore the altmode, except that  if you
are already  in SOS mode  the sequence ?<alt>  will leave  that mode.
(If you are not in SOS mode, of course, the ? will be taken as a real
question mark and the <alt> will enter SOS mode!)

3.  These comments apply even to the original command  line, although
the monitor will echo a crlf after the altmode to confuse  you.  Note
that if your FCS  bit is off and you  want to invoke the  RCV feature
which types  a user's plan  file, you must  say RCV ??prg  instead of
RCV ?prg as usual.

4.  Under no circumstances is tty output done via SOS  conversion.  I
hate seeing all those question marks!

5.  If you are in SOS  mode and type ? followed by a  character which
is not  defined as an  SOS code, the  character will be  treated, and
echoed, as ASCII  7; this will  ring your tty's  bell if it  has one,
give an error message if you are responding to an option request, and
insert a π in your message if you are appending.
Appendix 5                                                 DART   119


                             APPENDIX 5

                                DART




The DART (Dump  and Restore Technique) program  is used to  save disk
files on magnetic tape.  It also includes tape  positioning commands.
This  appendix is  excerpted  from the  file  DART.REG[UP,DOC], which
includes information on DART tape formats, complete disk dumps, etc.,
as well as the following facilities provided for individual users.

In  the  description below,  braces,  {  and },  are  used  to denote
optional items.   Vertical bar, |  , denotes an  exclusive-or choice.
Pointed brackets, < and >,  are used to enclose syntactic  items that
are defined below.

DART accepts the following monitor commands:

  DUMP     {<dest>←}{<source>}
  RESTORE  {<dest>←}{<source>}
  REWIND   {<dev>{:}}
  EOT      {<dev>{:}}
  ADVANCE  {FILE|RECORD} {<dev>{:}} {<count>}
  BACKSPACE{FILE|RECORD} {<dev>{:}} {<count>}
  LOCATE   {<dest>←}{<source>}
  TLIST    {<dest>←}{<source>}

  <dest> ::=    {<dev>:}<file>{.<ext>}{[<prj>,<prg>]}
  <source> ::=  {{<dev>:}{[<prj>,<prg>]}@}
                     {<dev>:}<file>{.ext}{[<prj>,<prg>]}{,<source>}

  <dev> is "any" legal device name.
  <file> is any file name or *
  <ext> is any file extension or *
  <prj> is any project code or *
  <prg> is any programmer name or *
  <count> is any string of decimal digits.

Caution: The  only devices  that are appropriate  here are  disk, mag
tape,  and  UDP.   See  the  semantics  section,  below,  for further
explanations.

REWIND

This command  will cause the  device named to  rewind to  load point.
MTA0 is the default if no device argument is used.  The  device named
should be a magnetic tape unit.
Appendix 5                                                 DART   120


EOT

This command will cause ADVANCE FILE to be repeated until  either two
adjacent file marks are seen (logical end of tape) or  until physical
end of tape is reached.

ADVANCE and ADVANCE FILE

This command will cause the  tape to advance past the next  file mark
on the tape.  If a repeat  factor is given, then the command  will be
repeated that number of times.

Caution: DART  often records more  than one disk  file on a  mag tape
file!  Therefore,  advance file will  (sometimes) skip more  than one
disk file.

ADVANCE RECORD

Same as ADVANCE FILE except that instead of file marks,  record marks
are used.  This command leaves you at the front of a record.

BACKSPACE and BACKSPACE FILE

This command will cause the tape to move backwards until a  file mark
is seen.  DART then does  one ADVANCE FILE operation to  position the
tape at  the front of  a file (immediately  after the file  mark just
read).  If a repeat argument is given, then that argument is  used to
repeat the backspace operation.  Only one ADVANCE is used,  after all
backspace operations.

Caution: BACKSPACE or BACKSPACE 1 will position the tape at the front
of  the  current  mag  tape  file.   BACKSPACE  2  will  position one
previous, etc.

BACKSPACE RECORD

Same as BACKSPACE FILE except that record marks are used to  stop the
operation instead of file marks.  After all backspaces are completed,
DART does an ADVANCE RECORD command.

LOCATE

For each  file named in  the argument list,  this command  prints the
tape  numbers  where  this  file  was  dumped  and  the corresponding
creation dates of the file.

TLIST

This command  will list on  the destination device  the names  of the
files that are read from the source device.
Appendix 5                                                 DART   121


DUMP

This command will  write on the  destination device those  files that
are specified by  the source term.  If  there is no  source argument,
*.*[current area] is used.

RESTORE

This  command will  restore  to the  destination the  files  that are
described by  the source  term.  A null  source or  destination means
*.*[current area].  The command RESTORE [*,REG]←[*,REG]  will restore
all of REG's files to the areas that they were dumped from.
Appendix 6                                 Service Level System   122


                             APPENDIX 6

                     SERVICE LEVEL SYSTEM (RSL)




The  RSL monitor  command  runs the  RSL program  to  reserve service
level.   The  monitor command  takes  no arguments;  the  RSL program
itself  accepts  commands  which control  its  operation.   The first
section of this appendix explains the concept of service level.

The timesharing scheduler gives different priorities to each of three
user  classes:  interactive  users, reserved  users,  and  all others
(scavengers).  The  first goal  of the scheduler  is to  provide good
service to anyone doing interactive work such as editing.  The system
decides whether a given job is currently interactive on the  basis of
keyboard input activity.

When you log  in at a  time for which you  have made a  service level
reservation, you are assigned  that service level.  Whenever  you are
running, the  scheduler will  then attempt to  give you  a processing
level (% of CPU time) given by

PL = SL - C * (B - 1)/10

where SL is the  service level, C is  your current core size  (in K),
and B is  the price of  service level. The  system will not  let more
than  a certain  total  service level  to  be allocated  in  this way
(currently 80%).

If you are neither interactive nor reserved, you get some of  what is
left, which may be pitifully little.  The system is supposedly rigged
so  that  reserved users  always  get  service at  least  as  good as
scavengers.  Note that if you are editing and execute  a long-running
string search,  the system may  decide you are  a scavenger  and take
forever to finish.

Each authorized user has an  allowance of two kinds of  money, called
whams and bams.  Whams may be used only to purchase  reservations for
peripheral devices, including III terminals, while bams are good only
for CPU service.  The allocations are as follows.

                  Whams Bams
  Half time user    4    100
  Full time user    8    200
  Panic user       16    400

You are half time or full time in accordance with the portion of your
Appendix 6                                 Service Level System   123


time devoted to A.I. activities.  In an emergency situation,  you may
be given a short term appointment as a Panic user.

Your "money" allocations are actually revolving funds in that  if you
reserve machine time and use it, you may then re-use  the reservation
money.  In effect,  then, there is a  limitation on how much  you can
reserve at a  given time.  There is  no conversion between  whams and
bams, nor can funds be transferred between persons.

The display costs  W (whams/hour) vary with  time of day as  given in
the table below. The price P (bams/hour) of buying any  given service
level SL (in percent) is

P = SL*B

where B is the rate (bams/hour) given in the same table.

       Time           0000-0900   0900-1300   1300-1800   1800-2400
                        W & B       W & B       W & B       W & B
  Monday-Friday           1           2           3           2
  Sat., Sun., holidays    1           1           2           1

You may reserve a display without a service level or vice  versa, but
reservations may  be made  only for integral  hours beginning  on the
hour.   Other peripheral  devices may  be reserved  only if  you have
reserved a service level.  The minimum service level purchase is 5%.

The time from 8AM to 9AM and from 5PM to 7PM on weekdays  is reserved
for maintenance.  No service level or device reservations may be made
in those time periods until 18 hours before the  period.  Maintenance
reservations for the entire machine may be made, however.



                        Using the RSL Program


The monitor command RSL with no arguments runs the RSL  program.  You
must be logged in first.

RSL will prompt you with an asterisk ("*") when it's ready  to accept
commands.  Command format is discussed in detail below.  Commands are
RESERVE, CALENDAR, AVAILABLE, DISPLAY, MAINTENANCE, HELP, and EXIT.

For example, to reserve 15% SL  at 1400 on the 31st of  December, any
of the following command strings will serve:

RESERVE 15 SL AT 1400 HOURS ON 31-DEC
r 15 on 31 decemb at 2 p.m.
RE 2 PM ON 31 DECEMBER 15
Appendix 6                                 Service Level System   124


R 15 14 31 12

If you wish  to change a service  level reservation, just  do another
reservation for  the new desired  amount.  Releasing a  service level
reservation may be done by "reserving" 0% SL.



                             IMPORTANT!


When you are through making reservations, you should exit from RSL by
typing  E.  If  you exit  instead  by typing  CALL, then  there  is a
possibility that your reservations may get lost. The E command causes
reservations to be written out onto the disk.



                       How to Reserve Devices


The six III displays, the user disk pack, plotter, and MTA0  may also
be  reserved.   RSL  merely makes  and  retains  device reservations;
unlike  service  level, enforcement  is  left up  to  the  users.  To
reserve III24, 5% service level, and the user disk pack, type RESERVE
5  SL III  24  UDP or  R III4UDP5.   A  device may  be  unreserved by
preceding  it  with  a  minus  sign:  R  -III  PLTR  -UDP   MTA  will
simultaneously reserve  MTA0 and the  plotter, and unreserve  the UDP
and any and all IIIs.  If  you don't care which III you get,  you may
say  III instead  of III4  or III23  etc.  Note  that the  plotter is
considered by the  computer to be the  same device as the  paper tape
punch, so reserving PLTR also makes the PTP unavailable.



                      Other Commands Available


To get  a list of  your current reservations,  type DISPLAY or  D for
short.  The command string D XYZ will get a list of  programmer XYZ's
current reservations.

The  CALENDAR  command  will show  you  which  programmers  have what
reservations on  a given time  and date.  For  example, C FOR  3 will
show you the  reservations for the current  hour and the  following 2
hours also.

AVAILABLE  is a  short form  of  CALENDAR.  A  0000 HOURS  FOR  24 ON
1-JAN-88 will yield 24 lines of output telling how much service level
Appendix 6                                 Service Level System   125


is still available at each time slot on the first day of 1988, should
the system last so long.

HELP or H will type for you a summary of command string  structure in
condensed form, not necessarily comprehensible.

The MAINTENANCE or M  command reserves the entire (bare)  machine for
hardware or software  purposes, e.g., M 4  pm for 2 will  request the
machine for  maintenance from 4  to 6 pm.   This command can  also be
used to cancel  a bare machine reservation.   Just type a  minus sign
immediately in front  of the date specification,  e.g.  M -25  nov 73
for  2.   Do  not  use  this  command  without  prior  administrative
approval.

Proper use of the EXIT command can be very important, and requires an
understanding of  its function.   The data base  for all  current and
future reservations is kept  internally in the *-SL-* program  at all
times.  Many of the commands you  give to RSL cause a change  in this
data base.  However,  these changes are  not necessarily made  in the
permanent  data base,  which  lives on  the  disk.  The  EXIT  (or E)
command causes the internal data base to be written out on  the disk,
and it is only this  copy which can survive system crashes  or system
maintenance.  It is possible to lose reservations by leaving RSL with
CALL instead of~ E.



                         RSL Command Syntax


Anything in curly brackets is optional.

A  slash  ("{  }/"{  }) between  two  terms  represents  one  or more
delimiters (space, slash, apostrophe, minus sign, comma).

A double arrow ("{ }↔"{ }) between two terms indicates that the order
of  the terms  is not  always  important.  If  the syntax  of  a term
distinguishes it, then  it may appear  anywhere in the  command line,
provided no nondistinguishable term  which might be confused  with it
precedes it.  (It's simpler than it sounds.)
Appendix 6                                 Service Level System   126


  <RSL command> ≡ <Rcom>|<Acom>|<Ccom>|<Dcom>|<Hcom>|<Mcom>|<Ecom>
  <Rcom> ≡ RESERVE {<sl-arg>}↔{<hr-arg>}↔{date-arg>}↔{<for-arg>}
                          ↔{<device>}
  <Acom> ≡ AVAILABLE {<hr-arg>}↔{date-arg>}↔{<for-arg>}
  <Ccom> ≡ CALENDAR  {<hr-arg>}↔{date-arg>}↔{<for-arg>}
  <Dcom> ≡ DISPLAY {<programmer initials>}
  <Hcom> ≡ HELP
  <Mcom> ≡ MAINTENANCE {-}{<hr-arg>}↔{<date-arg>}↔{<for-arg>}
  <Ecom> ≡ EXIT
  <sl-arg> ≡ <integer> | <integer> SL
  <hr-arg> ≡ {AT} <military hour> | {AT} <civilian hour>
  <civilian hour> ≡ [ 1 | 2 | ... | 12 ] { AM | A.M. | PM | P.M.}
  <military hour> ≡ [0 | 1 | ... | 23]{00} {HRS|HOURS}
  <date-arg> ≡ {ON} <people day>
                          | {ON} <day-arg>/<month-arg>{/<year-arg>}
  <people day> ≡ SUNDAY | MONDAY | ... | SATURDAY
  <day-arg> ≡ 0 | 1 | 2 | ... | 31
  <month-arg> ≡ <people month> | <computer month>
  <people month> ≡ JANUARY | FEBRUARY | ... | DECEMBER
  <computer month> ≡ 1 | 2 | ... | 12
  <year arg> ≡ {19}71 | {19}72 | ... | {19}80
  <for-arg> ≡ <integer> | FOR <integer>
  <device>  ≡ MTA | PLTR | UDP | <iii>
  <iii> ≡ III | III0 | III1 | ... | III5
                          | III20 | III21 | ... | III25



                              Semantics


Names  of  commands,  weekdays  and  months  may  be  abbreviated  by
truncation, and may be capitalized  or not.  Device names may  not be
abbreviated.

The FOR term (e.g., FOR  3) specifies a consecutive number  of hours,
starting with the hour and date specified.

When the syntax of a  command does not allow a  left-to-right scanner
to distinguish terms, then the ambiguous terms will be assumed  to be
in the order listed in the syntax.

If a term is missing from  an argument, RSL will supply one  it deems
appropriate.  RSL always  has a time and  date "in mind,"  called the
default date.  The  default time and date  are usually the  last time
and date  you typed.  If  a command does  not specify a  time (date),
then the default time (date) will be used.

Commands terminated with a line feed (altmode) will  advance (backup)
Appendix 6                                 Service Level System   127


the default time and  date before executing the command.   The amount
of advance (backup) is  1 hour, 1 day,  1 week, 1 month  depending as
plain, control, meta,  or control-meta were  used with the  line feed
(altmode).

A date specified by giving the name of a day, is the  earliest future
or present date falling on the given weekday. (Notice that at 0830 on
Wednesday, "WEDNESDAY" specifies either the current date, or the date
one week hence, depending on the hour specification.)
Appendix 7                                             FIXIMLAC   128


                             APPENDIX 7

                              FIXIMLAC




The  FIXIMLAC command  is  used from  IMLAC terminals  to  reload the
program  which  controls  the terminal  into  its  minicomputer.  The
command runs a program on the PDP-10, and may be used without logging
in first.   The use  of the  command is  shown below  as part  of the
startup procedure.

IMLAC RELOADING PROCEDURE

IF THE IMLAC IS DEAD:

1.  SHIFT LOCK off (up).

2.  Start at  40 (Push STOP,  then hold the  AT 40 key  while pushing
START).

3.  Type C (upper case) several times to send ↑C's.

4.  Type fiximlM (upper case M goes out as a <CR>).

5.  Wait about 10 seconds to give the system time to log you in.

6.  Hit <CONTROL><TOP><SHIFT>S.

IF THE IMLAC IS ALIVE:

1.  At monitor level, type FIXIML.

2.  When the program puts out a *, type

      <CONTROL><TOP>B             (Sends the IMLAC to its loader)
      <CONTROL><TOP><SHIFT>S      (Starts the loader)
Appendix 8                                         ARPA Network   129


                             APPENDIX 8

                            ARPA NETWORK




The ARPA  network is  a facility organized  by the  Advanced Research
Projects Agency of the Department of Defense to connect  computers at
various research centers funded by ARPA, allowing people at  one site
to use the resources of another site.  The device which  provides the
interface  between  our  computer  and  the  network,  called  an IMP
(Interface Message Processor), can be used by user programs  like any
other  I/O  device.   Two  main  system  programs  are  provided  for
connecting to  other computers by  console commands: the  user TELNET
program, called T, and  the File Transfer Protocol, FTP.   The former
allows you  to use  your terminal  as if  it were  a terminal  of the
remote host computer; the latter provides high-speed  transmission of
data  between  hosts.   This  appendix  explains  the  use  of  these
programs.  It contains excerpts from the file  NET.JAM[UP,DOC], which
also describes  the UUOs for  user programming of  the IMP.   The FTP
command description here is taken from FTP.DCS[UP,DOC].

The TELNET or TN commands, which are identical in effect, are used to
run T.  The  FTP command runs FTP.   Both require that you  be logged
in.  They take a remote  host name as argument.  (The host  names are
listed in a  later section of this  appendix.)  Both programs  try to
establish a connection to  the remote site.  Once this  connection is
established, the T  program simply allows you  to type at  the remote
computer as  if you  were using one  of its  own terminals.   (T also
handles  special command  characters which  control local  echoing of
typein, etc.)  FTP, however, accepts commands which allow sending and
receiving files.   The special  commands for  these programs  will be
described below, after a glossary of ARPA network jargon.



                              Glossary


NCP                     This  is  the software  in  the  monitor that
                        services the IMP.

TELNET                  The  thing  you  type  into  that  sends your
                        characters off  to a foreign  site is  a user
                        TELNET program. The thing that  receives them
                        at the  other end and  passes them on  to the
                        timesharing  monitor  there  is   the  server
                        TELNET.    These  are   generally  user-level
                        programs.
Appendix 8                                         ARPA Network   130


SOCKET                  When you log in on another system,  there are
                        four  socket  numbers  involved.  There  is a
                        local  send  socket number,  a  local receive
                        socket number, a foreign send  socket number,
                        and a  foreign receive socket  number.  These
                        numbers are  internal connection  indexes and
                        are  used   to  keep   different  connections
                        separate.  Each  connection has a  unique set
                        of  4 socket  numbers.  (Actually,  there are
                        two   connections  involved,   one   in  each
                        direction.   Thus, in  ARPA  net terminology,
                        each connection  has two socket  numbers, but
                        you have four sockets altogether.)

LOGGER                  Each site  is supposed  to provide  a program
                        that does nothing  but sit around  and listen
                        to socket 1.  When someone connects to socket
                        1, the LOGGER is  supposed to send it  back a
                        socket number that  the foreign host  can use
                        to connect to the LOGGER's host on.  Only the
                        serving host knows what socket numbers it can
                        service, and it is  the job of the  LOGGER to
                        pass  out  these numbers.   (The  LOGGER also
                        listens to socket 3 for FTP requests.)

RFC                     Request for connection.   This is how  a pair
                        of   hosts  establish   a   connection.   The
                        originating   host  sends   an  RFC   to  the
                        destination host  with a local  socket number
                        and  a  foreign socket  number  as arguments.
                        The   destination  host   can   complete  the
                        connection by returning an RFC with  the same
                        socket numbers, or can refuse  the connection
                        by returning a close code.

LINK                    Once  a connection  is established,  an 8-bit
                        link number is  assigned such that  the 8-bit
                        host number concatenated with the  8-bit link
                        number  is  unique   at  both  ends   of  the
                        connection.   During  the  lifetime   of  the
                        connection,  the  link  number  is   used  to
                        separate  the connections,  being as  how the
                        socket  numbers are  32 bits  long.   The IMP
                        itself is programmed in such a way  that only
                        one message may be in transit on a particular
                        link at a time.  The IMP signals  the sending
                        host   that  the   message  has   arrived  by
                        returning  a RFNM  (request for  new message)
                        with that link number as an argument.  All of
                        this is invisible to the user.
Appendix 8                                         ARPA Network   131


CONTROL MESSAGES        Data is sent between hosts on a non-zero link
                        number.  Link zero is defined as  the control
                        link,  on which  hosts  communicate regarding
                        the connections.   All host to  host protocol
                        messages are exchanged on link zero.

ALLOCATION              The host to  host protocol defines a  kind of
                        flow control on a higher level than  the RFNM
                        control.   This  is  the  allocation  system.
                        When a  connection is first  established, the
                        receiving  host   sends  a   control  message
                        telling the  sending host  how many  bits and
                        messages can  conveniently be  buffered.  The
                        sending  host must  then not  send  more than
                        that  many bits  or messages  without waiting
                        for more allocation from the  receiving host.
                        Although much of this is unseen to  the user,
                        the user has control over how much allocation
                        the system  will give  the remote  host.  For
                        data  and  file  transfer  purposes,   it  is
                        convenient  to increase  the  allocation over
                        the system default amount.



                           The User TELNET


Our user TELNET program is called  T.  It is run by the TELNET  or TN
commands, which  take a site  name as argument.   When it is  run, it
attempts  to connect  to  the specified  host.  It  will  type either
Connection established if successful, or an error  message otherwise.
The various possible connection errors are described later.

The information  which follows  also applies to  the DIAL  program, a
version of T which uses dial-up telephone connections rather than the
ARPA network.  The  format of the DIAL  command is explained  on page
59. Another version of T  is called PTYJOB, for communicating  with a
pseudo-Teletype; it is not run  with its own monitor command,  but by
R PTYJOB.

Foreign sites do not  use the Stanford character set.   Instead, they
accept  standard  ASCII  codes.  Letters,  digits,  and  most  of the
punctuation characters  available in  ASCII are the  same in  the two
codes, however.  The main difference  is that codes 1 to  37 (octal),
used  for  special  printing  characters  at  Stanford,  are  control
characters in ASCII.  The precise use of these control  characters is
defined  by the  remote host.   TENEX sites,  for example,  use ASCII
control-A to mean "delete one character," like our BS.  Our T program
Appendix 8                                         ARPA Network   132


handles this difference by interpreting the CONTROL key on a Stanford
keyboard to  mean ASCII control;  i.e., CONTROL on  a letter  makes T
convert the letter to upper case and subtract 100 from  the character
code.  T uses META and CONTROL-META characters as commands to itself,
as  listed  below.   In   some  cases,  META  and   CONTROL-META  are
equivalent.   In  others, a  processing  switch is  set  by  META and
cleared by  CONTROL-META.  In the  list below, βX  represents META-X,
αβX is CONTROL-META-X, and ⊗X means either one.

There  are  certain differences  between  the two  character  sets in
non-control characters.  These  are handled by  automatic translation
in our TELNET  and FTP user  and server programs.   Specifically, the
following translations are done:

char    Stanford   ↔   external

  ~          32    ↔    176
  }         176    ↔    175
 ALT        175    ↔     33
  ≠          33    →     33

The Stanford not-equal has  no external representation and  cannot be
entered  from  a  remote  site.   All  other  codes  are  transmitted
unchanged.  Note that our BS  (octal 177) is the ASCII  delete; there
is an ASCII backspace (10), which is our λ.  Typing λ or CONTROL-H to
T will  produce that  code.  The other  possible ambiguities  are our
characters  ↑ (136)  and  ← (137).   These codes  have  two different
meanings: the DEC  PDP-10 version of ASCII  agrees with our  use, but
the  official version  uses those  codes for  ∧ and  _.   Our network
programs support the  arrow version, and our  ∧ and _  characters are
transmitted unmodified as 4 and 30.

It is possible to simulate the CONTROL and META functions  when using
T  from  a  Teletype.   To allow  this,  T  recognizes  the character
control-E (↑E)  as an escape  character if it  is run at  a Teletype.
One ↑E  before a  character means  CONTROL, two  ↑Es means  META, and
three means CONTROL-META.  For example, ↑E↑EQ from a Teletype is like
META-Q at a display.



                        Control Commands to T


⊗<number>An octal argument is assembled from digits typed this way.

βL       Enter line mode.  Characters you type are sent to  your line
         editor  as usual,  and  not sent  to the  remote  site until
         activated  by RETURN,  LINE, ALT,  or some  CONTROL  or META
         character not taken as a line editor command.
Appendix 8                                         ARPA Network   133


αβL      Enter single character  mode.  In this mode,  each character
         is an activation character, and is sent individually  to the
         foreign host when it is typed.  This is useful for using DDT
         at a remote host.

⊗S(no arg) Send.  If T is in  line mode, this command causes  all the
         characters  typed so  far to  be sent  to the  foreign host.
         Normally, the characters are  sent only when CR, LF,  or ALT
         are typed when in line mode.  This command is not useful for
         Teletypes, because typing ↑E↑ES does not cause an activation
         in line mode.

<arg>⊗S  Sends the previously typed octal argument as a  single ASCII
         character.  For instance, ⊗1⊗0⊗1⊗S  is the hard way  to send
         an "A".

αβ<BS>   Sends 177  (ASCII delete).   The line  editor will  not send
         <BS> to programs without CONTROL-META.

βY       Enter Datapoint  simulation mode.  This  is often  used when
         talking  to  the three  ITS  systems at  MIT.   If  you also
         convince  MIT  that  you  are  a  Datapoint,  their  display
         programs will work properly from our display terminals.

αβY      Leave Datapoint simulation mode.

βE       Begin  local  echoing.   Also attempts  to  turn  off remote
         echoing.    Different    sites   have    different   echoing
         conventions.  Some sites  expect to send back  echoing, some
         do not.  If you find that what you type is not  being echoed
         in a reasonable  time, you may use  this command to  let you
         see what you  are typing.  In  the DIAL program,  this makes
         you look like  a half duplex  terminal, and does  not change
         the state of remote echoing.

αβE      Terminate local  echoing.  Also attempts  to turn  on remote
         echoing.   One does  this when  each key  one  types appears
         twice on the console.  Turning off local echoing  will often
         eliminate one copy  of the key.   The DIAL program  does not
         attempt to change the state of remote echoing.

βO       Turn on console typeout.  See αβO.

αβO      Turn  off console  typeout.  Useful  when output  is already
         going to  a file  and you don't  want to  waste the  time it
         takes to type out on your console as well.

βR       Inhibit sending of LF after CR.  Normally, when CR is typed,
         a  LF is  invented by  the system  and CRLF  is sent  to the
Appendix 8                                         ARPA Network   134


         foreign host.   This command inhibits  sending the  LF after
         the CR.

αβR      Enable  sending  LF  after CR.   The  inverse  of  the above
         command.

βK       Inhibit duplexing LF after CR.  The system normally  types a
         LF out when you  type CR.  This command inhibits  that. This
         command is  different in effect  from βR, because  it alters
         only what appears on your screen, not what goes out over the
         line.

αβK      Enable  duplexing LF  after CR.   The inverse  of  the above
         command.

⊗X       Set escape character.  The escape character is  normally set
         to  ↑E,  but  may  be changed  by  this  command.   The next
         character typed  is taken  to be  the new  escape character.
         This is useful for Teletypes only.

βI       Open input file.   This command asks  for a file  name, then
         proceeds to send said file to the foreign host.

αβI      Close input file.

βD       Open output file.  This  command asks for a file  name, then
         proceeds  to write  everything that  comes from  the foreign
         host  on  this  file.  Note  that  characters  you  type, or
         characters from  any input  file that is  opened, do  not go
         into the  output file unless  the foreign host  is duplexing
         them.

αβD      Close output file.

βF       Open output file like βD, but append the text to an existing
         file of the same name.   You are only asked for a  file name
         if you have not previously opened an output file with  βD or
         ⊗F during this session; if you have already named  an output
         file, the new output will be appended to that one.

αβF      Append to file, like βF, but always asks for a file name.

⊗<form>  If  there  is  an  output  file  open,  insert  a  form feed
         character in it.

⊗Q       Quit.  Terminates connection and closes any input  or output
         files that may be open.

⊗C       (TELNET only) Send interrupt.  This is the  network protocol
         for "return to monitor" or equivalent.
Appendix 8                                         ARPA Network   135


βC       (DIAL only)  Turn on control  character mode.  In  this mode
         all characters received from the dataphone are typed on your
         console.

αβC      (DIAL only) Turn off control character mode.  In  this mode,
         octal  codes 1-10,  16-37,  and 177  are not  typed  on your
         console when received from the dataphone.

βM       (PTYJOB only)  Enters a mode  in which all  9-bit characters
         you type are sent unchanged  to the PTY except βM,  αβM, βZ,
         and αβZ.  (Of course, if you are in line-at-a-time mode some
         control characters are still interpreted by the  system line
         editor.)

αβM      (PTYJOB  only) Leaves  the above  mode;  meta-characters are
         again interpreted as commands to PTYJOB.

⊗Z       (PTYJOB only) Quotes the following 9-bit character, so it is
         sent to the PTY as is, regardless of the βM mode switch.

T normally sets the echoing and activation conventions to  those used
by  the particular  site in  question, but  anomalies do  occur.  For
instance, the foreign host's program may instruct the  foreign system
to inhibit duplexing, but that will not inhibit local duplexing.  For
example, if  local echoing  is in  effect, an  attempt by  the remote
computer to prevent echoing of a password will not work.



                     The File Transfer Protocol


The FTP  command is  used to  set up  a connection  to a  remote File
Transfer Protocol Server.  It takes a site argument like  TELNET, and
the connection process is identical.  Once the connection is  set up,
you  can  enter the  following  commands to  the  FTP  program.  Each
command  is a  four-letter name  followed by  arguments  as described
below.  Note  that file specifications  for remote sites  must follow
the format conventions of that  site; they are passed on  verbatim by
the FTP.  In  particular, the case of  letters may be  significant at
some sites.

Note: FTP command  strings sent over the  control link to  the remote
host are  subject to  character conversion  to conform  with standard
ASCII,  as  described  in  the  discussion  of  the  TELNET  program.
However, the files transferred over the data link are not modified by
FTP.

BYTE n   n  is a  (decimal) number  indicating the  byte size  of the
Appendix 8                                         ARPA Network   136


         network data connection.  Data will be sent from one site to
         another in bytes of this size.

TYPE x   x is A, I, L, P, or E, and specifies the representation type
         for the data.  A means  the data is in (8-bit) ASCII.   I is
         image type.  The other  three are more obscure:  local byte,
         print file (ASCII), and  EBCDIC print file.  At  the moment,
         SAIL supports  ASCII and image  types only.  The  default is
         image.  If you must know about unusual types and modes, read
         the official FTP document, NIC 10596.

MODE x   x is  S, B, T,  or H, meaning  stream, block, text,  or hasp
         transmission  modes  respectively.   At  the   moment,  SAIL
         supports stream and text modes only.  The default is stream.

USER x   x is  a string which  the foreign site  will recognize  as a
         valid user  description, user name,  or ppn.  Not  all sites
         require a user name.

PASS foo foo is a password.  Some sites may restrict access  to those
         who can supply the magic foo.

ACCT x   x is  an account  number.  Some sites  may require  this for
         their billing/accounting purposes.

RETR x←y This command retrieves a file from the foreign site.  x is a
         local file  specifier, and  y is  a foreign  file specifier.
         The foreign file y is  copied to the local file  x.  Current
         settings  (or  default  values)  are  used  for  byte  size,
         representation type, and  transmission mode.  The  x← string
         is eaten locally, and the RETR y part is transmitted  to the
         foreign site.  If you haven't typed any MODE, TYPE,  or BYTE
         commands, the defaults will be sent before the first RETR or
         STOR.

STOR x→y STOR means  store, and  this command is  the inverse  of the
         RETR command.  A local file is copied to a foreign site.

APPE x→y This command will  append the local file  to the end  of the
         foreign file.

MAIL x   x is a user ID  (like our PPN).  Following this  command you
         may type in a message which will be mailed to  the specified
         user at  the foreign site.   The message must  be terminated
         with a line containing only a period.

MLFL x→y In this case x is a local file specifier, and y is a foreign
         user ID.  The text of  the specified file will be  mailed to
         the specified user.
Appendix 8                                         ARPA Network   137


HELP     This  command asks  the foreign  FTP server  to send  back a
         message indicating what commands it takes, etc.

STAT x   If x is  omitted, this command asks  the FTP server  to send
         back information regarding the FTP connection,  e.g., socket
         numbers.  If x is a  directory name at their site  (like our
         PPN), it lists that file directory.

DELE x   x  is  a  foreign file  specifier.   The  specified  file is
         deleted at the foreign site.

RNFR x   x is a  foreign file specifier.   This command is  short for
         rename from; it must be immediately followed by a RNTO.

RNTO x   x is a foreign  file specifier.  This command  completes the
         file rename operation started by RNFR.  (Some sites accept *
         for wildcard specification in these commands.)

RSTR     RSTR means  restore--included to help  remedy a hack  in the
         current FTP, wherein sometimes an attempted  transfer fails,
         but our end is unaware of it and leaves the connection open.
         The  RSTR command  causes our  end to  forget  everything it
         knows about data connections to the other end.   Any command
         should be legal after that.

QUOT x   x is any character  string, which should be an  FTP protocol
         command with arguments.  The  string is sent as is  over the
         FTP control  link (see FTP  protocol, NIC 10596  for terms).
         QUOT was included to allow you to execute commands which are
         as  yet  unimplemented  here,  or  which   are  nonstandard,
         specific to some serving site.  It will be of little use for
         those commands which require some special action by  the FTP
         program at this end.

QUIT     Terminate connections with the foreign site and quit.
Appendix 8                                         ARPA Network   138


                       Table of Host Mnemonics


Note: A decimal site number  may be used with TELNET and  FTP instead
of  a  site  name.   Also,  <site>#<socket  number>  will   select  a
particular  socket.    (Some  hosts   provide  special   services  at
particular sockets.)
Appendix 8                                         ARPA Network   139


         LONG NAME    SHORT  SITE      LONG NAME    SHORT  SITE


         AFWL-TIP     AFWLT  176       LL-ANTS      LLAN   95
         ALOHA-TIP    ALOT   164       LLL-RISOS    RISO   21
         AMES-11      AME11  208       LONDON       LOND   42
         AMES-67      AMES   16        LONDON-TIP   UKT    170
         AMES-TIP     AMET   144       LONDON-VDH   UKVD   106
         ARPA-DMS     ARPA   28        MIT-AI       AI     134
         ARPA-TIP     ARPT   156       MIT-DMS      DMS    70
         BBN-11X      BBN11  5         MIT-ML       ML     198
         BBN-1D       BBN1D  232       MIT-MULTICS  MLTX   44
         BBN-NCC      NCC    40        MITRE-TIP    MTRT   145
         BBN-TENEX    BBN    69        NBS-ICST     NBS    19
         BBN-TENEXA   BBNA   197       NBS-TIP      NBST   147
         BBN-TENEXB   BBNB   133       NCC-TIP      NCCT   168
         BBN-TESTIP   BBNT   158       NORSAR-TIP   NORT   169
         BELVOIR      BELV   27        OFFICE-1     OFF    43
         BRL          BRL    29        PARC-11      PA11   160
         CASE-10      CASE   13        PARC-MAXC    MAXC   32
         CCA-TENEX    CCA    31        PARC-VTS     VTS    96
         CCA-TIP      CCAT   159       RADC-TIP     RADT   146
         CHII         CHI    131       RAND-RCC     RAND   7
         CMU-10A      CMUA   78        RML-TIP      RMLT   165
         CMU-10B      CMU    14        RUTGERS-TIP  RTGT   174
         CMU-11       CMU11  142       SCI          SCI    45
         CMU-CC       CMUCC  206       SCRL-ELF     SCRL   67
         DOCB-TIP     DOCT   153       SDAC-44      SDAC   26
         ETAC         ETAC   20        SDAC-TIP     SDAT   154
         ETAC-TIP     ETAT   148       SDC-CC       SDCC   72
         FNWC         FNWC   33        SDC-LAB      SDC    8
         FNWC-TIP     FNWT   161       SRI-AI       SRI    66
         GWC-TIP      GWCT   152       SRI-ARC      NIC    2
         HARV-1       HRV1   73        SU-AI        SAIL   11
         HARV-10      HARV   9         SU-DSL       DSL    194
         HASKINS      HASK   201       TYMSHARE-TIP TYMT   171
         HAWAII-500   HA500  208       UCB          UCB    98
         HAWAII-ALOHA HAAL   36        UCLA-CCBS    UCL10  129
         I4-ELF       I4ELF  79        UCLA-CCN     CCN    65
         I4-TENEXA    AMES   15        UCLA-NMC     NMC    1
         I4-TENEXB    I4TB   143       UCSB-MOD75   UCSB   3
         ILL-CAC      ILL11  12        UCSD-CC      UCSD   35
         ILL-NTS      ILNTS  76        UNIVAC       ILL    140
         ISI-DEVTENEX ISDT   150       USC-44       USC    23
         ISI-SPEECH11 IS11   22        USC-ISI      ISI    86
         ISI-TSP      ISTSP  214       USC-TIP      USCT   151
         LBL          LBL    34        UTAH-10      UTAH   4
         LL-67        LL67   10        UTAH-TIP     UTAT   132
         LL-TSP       TSP    138       WPAFB-TIP    WPAFT  175
         LL-TX-2      TX2    74
Appendix 8                                         ARPA Network   140


                      Connection Error Messages


CONNECTION HAS BEEN CLOSED

This means just  what it says.  The  host has voluntarily  broken the
connection for reasons known only to himself.

RESET RECEIVED FROM HOST

The host has sent us a  reset command which directs our NCP  to break
all connections to  this host and clear  our tables of  everything it
knows (regarding previous  connections) about this host.   Some sites
will send  a reset  the first time  you connect  to them  as standard
procedure.  In  this case,  trying again will  succeed.  In  the more
normal case, this means the host has crashed and just been brought up
again.

HOST DEAD

This means that the RFC got to the host's IMP, but was not  read from
the IMP  within 90 seconds,  and the IMP  timed out.   This generally
means the host is really down.

DATA QUOTA OVERFLOW

The host is not conforming to protocol and has sent us more data than
we allocated him.  We are breaking the connection.

END OF FILE

Doesn't occur in normal circumstances.

SOCKET IN USE

Generally  happens after  an aborted  attempt to  connect  to someone
else. This  means the foreign  host suddenly sprang  to life  after T
timed out and sent us an RFC from a different socket than he  told us
he has now.  This cures itself in a few minutes.

CAN'T CHANGE SOCKETS
SYSTEM ERROR
NO LINKS AVAILABLE
ILLEGAL BYTE SIZE

These all indicate horrible system errors of one form or  another and
should not happen.
Appendix 8                                         ARPA Network   141



IMP DEAD

The interface  has begun to  malfunction, the network  control center
has brought  the IMP down,  or someone here  has given the  magic UUO
that brings the IMP software down.

HOST NOT RESPONDING

One of the various timeouts inside T or the system went off.  T times
out  generally when  a  message is  sent  to the  foreign  host which
demands a response and no response was received within a "reasonable"
time.

The following  messages appear  only in conjunction  with one  of the
above messages  and indicates  only the  point in  T where  the error
occurred.

CAN'T CONNECT TO LOGGER

The  error occurred  on the  initial RFC  to get  the  foreign host's
LOGGER.

DIDN'T GET SOCKET NUMBER FROM LOGGER

We exchanged RFC's with the foreign host's LOGGER, but somehow he did
not send us a socket number.

CAN'T CONNECT TO RECEIVE SIDE

We got a socket number from the LOGGER and tried to open a connection
on that socket when the error occurred.

CAN'T CONNECT TO SEND SIDE

We got the socket number and successfully sent an RFC to  the receive
socket, but we hit  an error when trying to  send an RFC to  the send
socket.

ERROR WHILE WAITING FOR RECEIVE SIDE

This means that  we successfully sent RFC's  to the send  and receive
sockets, but we got an error while waiting for the return RFC  on the
receive side.

ERROR ON OUTPUT
ERROR ON INPUT

These  are given  after the  connection is  established and  refer to
errors that occurred while doing output or input.
Appendix 9                          Care and Feeding of Devices   142


                             APPENDIX 9

                     CARE AND FEEDING OF DEVICES






                          The Line Printer


On the  front of  the line  printer (LPT)  there are  several buttons
(STOP, START, TOP OF FORM, MANUAL PRINT, TEST PRINT, OFF, and ON) and
several indicators.  The normal state of the line printer is with the
START button lit and all red indicators off.  (TOP OF FORM  is always
lit.)

If the system or the  spooler reports that the line printer  is hung,
check the following things.  If the START button is not lit and there
are  no red  indicators, push  the START  button.  If  there  are red
indicators, NO PAPER or PAPER LOW ALERT lit, then you have to  put in
more paper (or fix the paper that has gone astray).

To reload the paper,  find someone who knows  how to do it  and watch
him, or do it yourself.  Reloading the paper is fairly  obvious.  The
front cover (which includes  a transparent section) is hinged  at the
top; lift it.  The yoke is the assembly which carries the ribbon, the
printing drum (which you can't  see) and a rotating disk at  the left
side.  Open the  yoke by finding two  toggle switches (one  with each
hand) and pushing them both down.  These switches are located  to the
left and right of the yoke and below it.  They are each labeled CLOSE
- OPEN.  The yoke will stop  when it is fully open.  Find  four paper
tractors, two above the printing hammers and two below.  Each tractor
has a sprocket  wheel (which pokes through  the holes in the  edge of
the paper) and a retainer which holds the paper against the sprocket.
Open all the tractors.  If the paper is perforated for 8.5  inch wide
pages, be  sure that  the perforation  is closer  to the  right side.
Push the TOP  OF FORM button before  loading the new paper.   Use the
black arrows to  align the "concave" fold.   The concave fold  is the
one where  the two adjacent  sheets are front  to front  when folded.
Close the four paper tractors so the sprockets fit into the  holes in
the paper. Close the yoke by finding those two switches  and pressing
up on both of them.  Push START.

Always restart the fan-fold at the back of the LPT so the  paper will
stack properly.

The line printer logic can become hung.  This condition is identified
Appendix 9                          Care and Feeding of Devices   143


by the MANUAL PRINT  light being on continuously.  Push  MANUAL PRINT
and then START to clear this condition.  If that fails, open the door
on the right side and  push the black button labeled RESET.   If that
fails, find a wizard.

If the ALARM STATUS light comes on or if the printer starts  making a
loud  buzzing noise,  shut  off the  printer  (push OFF)  and  find a
wizard.  (This light  may come on briefly  when the printer  is being
turned on.)

The YOKE OPEN light comes on when the yoke is open while the paper is
being changed.  When the yoke is closed it should go off.

The printer  has a ribbon  that can  be changed too.   It is  best to
watch someone do it before trying it yourself.



                              DECtapes


To  mount a  DECtape, first  assign an  available drive.   Drives are
identified  to  the  system  by  a  rotary  switch  labeled 1,2,...,8
corresponding to DTA1, DTA2,  etc.  Although there are  eight numbers
on the switches, there are only four drives, and the system  will not
recognize DTA5 and up.  Generally you should have no reason to change
the normal setting  of these switches.  Place  your tape on  the left
reel of the drive and thread the tape over the top of the  tape guide
and head assembly.   Wind several turns of  the tape onto  the takeup
reel (turn the reel clockwise).  Finally flip the OFF-WRITELOCK-WRITE
switch to WRITE LOCK, or if you want to write, to the WRITE position.

To  unload  the  tape, wind  the  tape  off the  takeup  reel  by the
direction switch (push it to  the left and hold it).  Turn  the drive
off when all the tape is on the left reel.  Grasp the reel firmly and
pry it off the hub.



                           Magnetic Tapes


First, decide whether you want to  write on the tape or not.   If you
intend to write, place one of the plastic write-enable rings  in your
tape.  Place your tape on the top hub and twist the handle in the hub
clockwise to tighten  the reel to the  hub.  (You can really  lose if
you don't tighten it all the way!)

Between  the  two  reels there  is  a  three-position  switch labeled
Appendix 9                          Care and Feeding of Devices   144


START-BRAKES.  Move the  switch to  the right  and hold  it  there to
release the brakes on the hubs.  Unwind the tape until the end of the
tape is about a foot from the floor.  Carefully thread the  tape into
the slot between the reels  to the left of the brake  release switch.
Wind the tape  onto the bottom reel  (wind the reel  clockwise).  You
must be  holding the brake  release switch to  the right to  wind the
tape.  Wind several feet of  tape onto the takeup reel until  you see
the metal foil load point marker go by.  Then push the  brake release
switch to  the left  (the START  position).  The  tape will  hiss and
spin.  Hold the switch in START until all motion stops.

There are some control buttons on the top panel.  One is labeled (and
lighted) REMOTE-LOCAL; this button toggles.  In LOCAL mode,  push the
REWIND  button.  If  you're not  sure that  you have  the  load point
marker  on  the takeup  reel,  push the  FORWARD  button  for several
seconds to wind the tape forward onto the takeup reel until it passes
the load  point marker,  then REWIND.  REWIND  positions the  tape at
load point.  Set the drive in REMOTE and it is all set to use.

Unloading the tape is simple.  In LOCAL mode, push the REWIND button.
When the tape finished  rewinding, push the brake release  switch and
manually wind the tape onto the top reel.  Unscrew the hub and remove
the reel.

The  magnetic tapes  are  quite finicky  and the  system  software is
somewhat flaky.  There  are several things that  you can do  with mag
tapes  that  will  upset  the  timesharing  system  and  require  the
intervention of a wizard who will be angry at you for  disturbing his
slumber.  Never stop your job when it is operating the tape by typing
CALL.  Instead, the job can  be stopped by causing the  magnetic tape
to appear  hung.  This is  done by switching  back and  forth between
REMOTE and LOCAL until the system stops the job.

There is a reset button for each tape drive located behind  the small
front panel below the  drive mechanism.  This button clears  all tape
motion functions in a reasonable way.



                       Xerox Graphics Printer


The normal condition  of the XGP is  indicated by the green  ON light
and the orange READY light being on.  If all indicators are  off, the
XGP main  power has been  shut off inside  the cabinet,  possibly for
some reason.

If the red OFF  light is on, push the  ON light.  This will  turn the
XGP on, unless some abnormal  condition obtains, such as a  paper jam
near the cutter.
Appendix 9                          Care and Feeding of Devices   145


If the orange STANDBY light is on, look inside the panel  above these
indicators.  The following is the normal state of the  indicators and
switches within:

        Knobs:  TEST PATTERN:           OFF
                VERTICAL POSITION:      leave this one alone

        Lights that should be on:
                All POWER SUPPLIES lights
                        (except 10kv and 2.5kv lights will
                        be off any time there is some other
                        problem)

                All PROCESS INTERLOCK lights

                All CONTROL LOGIC (except IN SYNC)

        Lights that should be off:
                All SUPERVISORY SIGNALS
                FAULT
                IN SYNC
Appendix 9                          Care and Feeding of Devices   146


Certain conditions of the XGP are indicated by lights being OFF.  (If
any of the conditions listed below obtains, the 10kv and  2.5kv power
supplies will shut off.)

        FWT     Fixed wait timer has not run long enough after 
                being turned on.  Wait 2 minutes.

        FUSER   The fuser is not hot enough.
                If the XGP has just been turned on, wait 5 minutes;
                otherwise, reset the over-temperature sensor.
                The over-temperature sensor is reset by a small
                black button located somewhere in the middle of the
                fuser wick assembly.

        WEB CLEAN
                The drum cleaning web must be replaced.

        PAPER OUT
                Load more paper.

        DRUM    The drum assembly has been disengaged.

        SWEEP PRESENT
                The interface is not providing a sweep signal.
                This may mean the connector is unplugged or the
                interface turned off.

To load a new roll of paper, open the left door of the  XGP.  Unscrew
the roll retainer  and remove the old  roll.  Unwind a foot  of paper
from the old roll and then cut the paper at the roll.  Mount  the new
roll and tape the front end  of the new roll to paper  separated from
the  old roll.   Make the  leading  edge of  the joint  as  smooth as
possible.  Using  the MOTOR MANUAL  DRIVE button, advance  the splice
through the machine until it has passed the cutter.

If any  problems develop  in this sequence,  find a  wizard.  Beware:
certain parts of the XGP are hot; you can be painfully burned  if you
touch the wrong things.

There is  a drum cleaning  web that runs  out at  inconvenient times.
There is a small diagram inside the XGP explaining how to  change the
web.

Toner is icky black stuff that makes the marks on the paper.  It gets
used up  and runs out  too.  Someone is  supposed to check  the toner
every day and add  more if it gets too  low.  If the XGP runs  out of
toner, the pages will start getting lighter, there will be occasional
black splotches on the  paper, and frequent sand-like  particles will
be found embedded in the paper.  Toner is checked through  the access
Appendix 9                          Care and Feeding of Devices   147


panel in the back  of the XGP.  There  is a lever there  that adjusts
the rate at  which toner is  used on the  paper.  This lever  must be
placed either at the lightest (inner) setting or one  setting darker.
Never, never set it anywhere else.

If you  don't like  the copy  quality, complain  to a  wizard.  Don't
adjust things yourself.



                           User Disk Pack


There is one drive on the IBM 3330 disk system which is  reserved for
private  disk  packs.  This  drive  is labeled  USER  PACK.   Use the
command ASSIGN UDP to assign the drive before you mount your pack.

Assuming there is no pack mounted already, you can mount your pack by
moving  the  CLOSE-OPEN switch  to  OPEN.  The  drive  will  open up.
Remove the bottom cover from the pack by squeezing the two handles on
the  bottom  together.  Place  the  pack  bottom on  the  top  of the
cabinet.  Place the pack (still in the top cover) in the  drive unit.
Turn the handle clockwise.  It  will be somewhat hard to  turn.  Turn
until it stops.  Carefully remove  the top cover and place it  on the
bottom cover.  Make sure the two covers are aligned to keep  dust out
of the  enclosed space.  Turn the  top cover  so the  label on  it is
visible.   Flip the  CLOSE-OPEN switch  to CLOSE  and  the START-STOP
switch to START.  The drive  will close and start spinning  the pack.
When the green ready light comes on, the pack can be used.   There is
a R/W-READ switch for the pack.  If you do not intend to write on the
pack, it is a good idea to put the drive in READ mode.

Unloading the  pack reverses  the steps  above.  Turn  the START-STOP
switch to STOP,  and the CLOSE-OPEN switch  to OPEN.  The  drive will
open as soon as the pack slows down.  Take the top cover  whose label
corresponds to the label on the pack and place it carefully  over the
pack. Turn the handle counter-clockwise until it moves  freely.  Lift
the pack out of the drive.  Place the bottom cover under the pack and
press it  on until  it latches.  The  covers help  keep dust  off the
packs.  Return the pack to the storage rack.  Leave the  label facing
outwards so you can find it again.

Occasionally,  the  UDP may  not  be available  to  anyone.   If this
happens, a wizard  will explain why.  Never  touch a disk  drive unit
unless  you have  it assigned!   Never touch  anything but  the drive
which is marked USER PACK!  If you are confused by something you see,
ask about it before you touch!
Appendix 9                          Care and Feeding of Devices   148


                            Core Storage


We  have the  most  outlandish collection  of junk  that  anyone ever
called a memory system.  Occasionally it works.  At the  other times,
it produces  parity errors and  sometimes it decides  not to  work at
all.

Memory errors  have never,  never been fixed  by software  means.  In
particular, reloading the system never solves the underlying problem.
If  the system  becomes unusable  because of  these errors,  a wizard
should be found.

Memories stop working entirely due to hardware logic bugs.   There is
a MEMORY STOP  light on the  PDP-10 console, which  usually indicates
this  problem.   Usually  the  memory can  be  reset  and  the system
continued.  If possible,  find a wizard  to fix it.   Otherwise, read
on.  A hung memory can be identified by:

  DEC core:AW RQ light off
  new Ampex: UA light off
  old Ampex: UA light off

Push stop on the PDP-6 and the PDP-10.  Reset the memory by:

  DEC core:Push RESTART (top panel) and RESET
           (inside the front panel) simultaneously.
  new Ampex: Push RESET (the big green-blue button)
           on Core 0 and Core 1 simultaneously, or
           Core 2 and Core 3 simultaneously.
  old Ampex: Push the black CLEAR button inside the
           cabinet and the white RESET button on
           the AMPEX INTERFACE box.

Once the  memory is reset,  the computers have  to be  convinced that
nothing bad happened.  To do this on the PDP-10, the USER  MODE light
on the console must  be off.  If it is  on, first turn on  the SINGLE
INSTRUCTION switch on the  console, then push CONTINUE.   This should
turn off the USER MODE  light.  Then turn off the  SINGLE INSTRUCTION
switch.  When the USER MODE light is off, enter 700200 010003  in the
data switches and push the EXECUTE key.  If the MEMORY STOP  light on
the PDP-6  is on,  follow the same  procedure as  on the  PDP-10 with
these exceptions: Instead  of a USER MODE  light on the  console, the
PDP-6 has an EXEC MODE light at the top of the second bay to the left
of the console; this light  must be on for the execute.   Also, there
is  no SINGLE  INSTRUCTION switch  on the  PDP-6; instead,  while the
INSTRUCTION  STOP switch  is  down, push  INSTRUCTION  CONTINUE once.
Finally, push CONTINUE on both machines.
Appendix 10                                Reloading the System   149


                             APPENDIX 10

                        RELOADING THE SYSTEM




If the  system crashes or  refuses to run  jobs normally, it  must be
reloaded.  If  possible, find  a system programmer,  who will  try to
find out what the trouble  is.  If that fails, check the  MEMORY STOP
light on the PDP-10 console.  If this light is on, look up the memory
stop procedure in Appendix 9.  Otherwise, read on.

First, write in the log your  name and the reason that the  system is
being reloaded.

Find the paper tape labeled SYSTEM LOADERS and mount it in  the paper
tape reader.  (It may be  mounted already, or it may be  an unlabeled
blue mylar tape loop.)  Push the console keys RESET and READ IN.

If you're lucky, the system will load itself without  further hassle.
If the PDP-6  is stopped, it  must be started  by setting 204  in its
address switches and pushing the keys INSTRUCTION STOP, IO RESET, and
START.

If the  system is being  loaded without the  PDP-6, then  the current
date  and time  must be  typed  in at  the CTY  during  the reloading
sequence.  Be sure you supply the correct date and time!

If  this procedure  fails,  check that  the  NXM STOP  switch  on the
console  is turned  on; then  check the  following  switches, located
inside the second door to the left of the console: JSYS ENB and MAPAC
ENB off, MA TRP OFFSET on.

If the  system loader  tape still  fails, find  the DECtape  with the
current system.  The DECtape will be labeled with the system name and
date.  Mount it on some  DECtape drive.  Find the paper  tape labeled
256K TENDMP or  128K TENDMP, and load  it into the paper  tape reader
(on the  PDP-10).  Stop the  PDP-6.  Press RESET  and READ IN  on the
PDP-10.  The paper tape will be read, and the CTY will  type carriage
return and line feed.  Type n$  where n is the number of  the DECtape
drive and $  is an alt  mode.  The DECtape  should spin for  a while,
then it will stop  and the CTY will  type crlf again.  Type  L$S then
carriage return.   The DECtape will  spin again, followed  by another
crlf.  Type  206$ then G$  to start the  system.  (If  the Librascope
disk is down, type 200$G$ instead.)
Appendix 11                              Monitor Error Messages   150


                             APPENDIX 11

                       MONITOR ERROR MESSAGES




This appendix lists  the error messages  typed by the  monitor itself
(not by other  system programs) with  explanations for some  of them.
Many have  to do  with errors induced  by UUOs  in your  program, and
these are  explained in  the UUO Manual,  in the  writeup of  the UUO
involved.   The list  is alphabetical;  messages which  start  with a
variable part are sorted under the first fixed word.

Note:  Several  of  these  messages  are  of  the  form  XXX  AT USER
<address>.  It is possible in some of these cases to get XXX  AT EXEC
<address> instead, which means that the offending instruction was not
in your program, but in the monitor, which was trying to do something
on your behalf when it  happened.  If this happens repeatably,  or if
the message  is shortly  followed by  a system  crash, tell  a system
programmer.

ADDRESS CHECK FOR DEVICE <dev>

          Your program  was trying to  use the indicated  device, and
          supplied a buffer address, dump mode command address, etc.,
          outside the bounds of your core image.

ADDRESS OUT OF BOUNDS, UUO AT USER <address>

          Your program executed a  UUO which takes as an  argument an
          address  in your  core image,  and the  address was  out of
          bounds.  The address given is that of the offending UUO.

ALREADY ASSIGNED TO JOB <job number>

          You typed an ASSIGN  command, and the device you  wanted is
          in use.

<terminal> ALREADY ATTACHED

          You typed an ATTACH command, and the job you are  trying to
          attach is already attached to a terminal.

ALREADY IN USE, CAN'T CHANGE FORMAT.

          You gave an ASSIGN  PUBLIC or ASSIGN PRIVATE command  for a
          UDP which was already assigned as OLD, or vice  versa.  The
          UDP  will be  assigned  to your  job  in the  same  mode as
          before.
Appendix 11                              Monitor Error Messages   151


ALREADY IN USE, CAN'T MAKE PRIVATE.

          You gave an ASSIGN PRIVATE or ASSIGN OLD command for  a UDP
          which was already in use  by another job.  The UDP  will be
          assigned to your job as PUBLIC.

?AMBIGUOUS JOB NAME

          Your program gave a MAIL UUO which refers to another job by
          name, and there are two or more jobs with that name.

ATTEMPT TO ENABLE INTERRUPT ON PDP-6

          Your program  tried to enable  a user interrupt  routine to
          run on the PDP-6.  This feature is not implemented.

ATTEMPT TO GENERATE NON-ENABLED INTERRUPT

          Your  program  tried  to  send  itself  or  another  job an
          interrupt for which the job was not enabled.

ATTEMPT TO INITIATE SPW JOB WITH ONE ALREADY RUNNING

          Your program has a spacewar module active and is  trying to
          start another one on the same processor.

ATTEMPT TO SCHEDULE I-LEVEL PROCESS, UUO AT USER <address>

          Your program's interrupt routine executed a UUO which would
          put it  in a  wait state.   User interrupt  routines aren't
          allowed to do that.  See the UUO Manual.

BAD DIRECTORY FOR DEVICE <dev>

          The device is a DECtape.  This might mean that the  tape is
          in a  format not  recognized by  the monitor.   (Our system
          uses  a   different  directory   format  from   the  PDP-10
          standard.)  It  can also happen  if you try  to write  on a
          write-locked DECtape.

BAD RETRIEVAL

          The pointers to your file  on the disk are invalid.   See a
          system programmer to try to fix it.
Appendix 11                              Monitor Error Messages   152



BUFFER TOO LARGE, UUO AT USER <address>

          Your program is trying to use an I/O device for which there
          is a  limit on  the allowable user  buffer size,  which you
          exceeded.   The  UUO  Manual explains  the  rules  for each
          device.

BUSY

          You gave a TALK command addressed to a terminal which is in
          user mode or has characters in its input buffer.

CAN'T ATT DEV

          You gave the  privileged ATTACH <device> command  and don't
          have the DEV privilege.

<dev> CAN'T BE REASSIGNED

          You  gave a  REASSIGN  command in  which the  device  to be
          reassigned was your own terminal.  This is illegal.

CAN'T CONTINUE

          You typed  CONTINUE after one  of the other  error messages
          came out, and you are not allowed to continue the job after
          that error.  You also cannot continue a job after a SAVE or
          SSAVE.

CAN'T DET DEV

          You gave the  privileged DETACH <device> command  and don't
          have the DEV privilege.

CAN'T ENTER-RENAME MFD

          If you get this message, see a system programmer,  who will
          eat you.

CAN'T LOCK WITH SEGMENT

          Your program, which has an upper segment, gave a  LOCK UUO.
          This is illegal.

CAN'T TERMINATE SOMEONE ELSE'S SOCKET!

          Your  program  is  using  the  ARPA  network  and  tried to
          terminate a connection which does not belong to it.
Appendix 11                              Monitor Error Messages   153


CHANNEL IN USE.

          You gave  the privileged  DETACH command  with a  Data Disc
          channel as argument, and the channel is in use.

CONFLICT BETWEEN INTERRUPT ENABLINGS

          Your program tried  to enable both old-style  and new-style
          interrupts in a conflicting manner.

CONS TRAP AT USER <address>

          You can  only get this  one from a  program running  on the
          PDP-6, which means it must be a spacewar module.   The CONS
          instruction  is  a   nonstandard  addition  to   our  PDP-6
          installed  for the  benefit of  LISP people.   It sometimes
          gives this message.  The address is that of the  CONS which
          failed.

CORE DEADLOCK.

          The monitor's free storage area has expanded enough so that
          user  core is  no longer  big enough  for your  core image.
          This might fix itself if you wait a while, but if  you must
          run immense programs your best bet is to come back at 3am.

COULDN'T GET YOU A SEGMENT.  WILL TRY TO LET YOU WIN WITH SETPR2.

          You tried  running a  program with  an upper  segment.  The
          program was loaded into core,  but there is no room  in the
          monitor's  job  tables  to  make  an  entry  for  the upper
          segment.  The monitor will try to simulate an upper segment
          for you  by leaving  the upper segment  code in  your lower
          segment,  but  simulating upper-segment  relocation  by the
          SETPR2  UUO  mechanism.  This  ought  to work  ok  for most
          two-segment  programs,  but  just in  case  it  doesn't the
          monitor  types  this   warning.   If  you  are   writing  a
          two-segment  program, consult  the UUO  Manual or  a system
          programmer for advice.
Appendix 11                              Monitor Error Messages   154



COULDN'T UNPURIFY UPPER. CONTINUE TO TRY ANYWAY.

          You typed a DDT command.  JOBDDT in your core  image points
          to an  address in  your upper segment  as the  DDT starting
          address, and  your upper segment  is write  protected.  DDT
          and RAID both contain instructions which modify themselves.
          The monitor tries to solve this by unprotecting  your upper
          segment.  If you are sharing the segment with  other users,
          it has to load a new copy for you so the other  users still
          have  a  protected  one.   This  might  fail,  for example,
          because  there  are  no job  slots  available.   All highly
          unlikely.

<dev> DEASSIGNED, BUT STILL INITED!

          You gave a DEASSIGN command for a device which is in use by
          your  program.   This  is all  OK;  the  monitor  is merely
          reminding  you  that  you still  control  the  device.  The
          FINISH command will release it, if that is what you want.

DEVICE <dev> NOT AVAILABLE

          The  device specified  in  a RUN,  R, GET,  SAVE,  or SSAVE
          command was unavailable to your job.

DEVICE <dev> OK?

          The device is somehow disabled.  If it's a mag tape, it may
          be in LOCAL mode.  The line printer could be out  of paper.
          You can fix the problem and type CONTINUE.

DISK IS FULL!

          Your program  is trying to  write a file  on the  disk, and
          there is no room.  If you delete some files  (using another
          job!), you can type CONTINUE and the file will be written.

DISK TRANSMISSION ERROR

          This is a disk failure.  See a system programmer.

ENTER FAILED

          The filename you typed  to ENTER NEEDED (see  below) didn't
          work.  Most likely this is a protection failure.
Appendix 11                              Monitor Error Messages   155



ENTER FAILED!

          The file  specified in  a SAVE or  SSAVE command  cannot be
          written.  This probably means that the file  already exists
          and is write protected.

ENTER NEEDED.  PLEASE TYPE FILE NAME.

          Your  program  tried to  write  on the  disk  or  a DECtape
          without doing  an ENTER UUO  to specify the  filename.  You
          are given the opportunity to specify the file to be used.

ERROR IN DSKSER

          Horrible error in the monitor disk service routine.   See a
          system programmer.

ERROR IN JOB <job number>

          This message will appear along with one of the others.  The
          only reason you  might need it is  if you are  running more
          than one job at once (through a PTY, for example).

ERROR IN MONITOR

          This message is usually followed closely by a system crash.
          Call a systems programmer.

FILE ALREADY EXISTS. DELETE?

          The filename  you typed  in response  to ENTER  NEEDED (see
          above) already exists.  If you type Y (and RETURN), it will
          be replaced with the  new output; otherwise, you  are asked
          for another name.

FINISH WHAT?

          You typed  a FINISH  command with  an argument  and weren't
          using that device (or there is no such device).

GOTCHA!

          This is not an error.  You get it when you are in  a device
          wait queue and your turn for the device comes.
Appendix 11                              Monitor Error Messages   156



HALT AT USER <address>

          Your  program  executed  a JRST  4,  instruction.   You are
          allowed  to  CONTINUE  the  job  after  this  message.  The
          address   typed  is   the  address   containing   the  HALT
          instruction, not its effective address.

HUNG DEVICE <dev>

          The device did not respond properly to your attempt  to use
          it in  some predetermined time.   This probably  means that
          the device is unusable for some hardware reason.

HUNG DEVICE: PDP-6

          Your  program is  trying to  run a  spacewar module  on the
          PDP-6, which is not responding.  Get a system programmer to
          fix it.

I-LEVEL TIME-OUT

          Your program's user  interrupt routine has run  longer than
          the maximum time allowed.  (No other user can run  while an
          interrupt routine  is in  progress, which  is why  they are
          limited in time.  See the UUO Manual about interrupts.)

I-LEVEL UUO GIVEN WHEN NOT AT I-LEVEL

          Your program tried to  execute a UUO which is  only allowed
          in a user interrupt  routine, when it was not  servicing an
          interrupt.

ILL INST. AT USER <address>

          Your program executed an undefined instruction or one which
          is not allowed in user mode.

ILL MEM REF AT USER <address>

          Your program tried to read or write an address greater than
          the size of its  core image.  The offending  instruction is
          at the address typed.
Appendix 11                              Monitor Error Messages   157



ILLEGAL ADDRESS FOR ADC-DAC

          The  PDP-6  has  detected  an  illegal  address  which  you
          specified to be used  for some function connected  with the
          ADC or DAC device.  This was not detected when your program
          executed a UUO,  but asynchronously, in the  device service
          program running on the PDP-6.

ILLEGAL ATTACH LOOP

          Your program is typing  into a pseudo-teletype and  gave an
          ATTACH command  trying to attach  its controlling  job.  In
          particular, people  using the system  via the  ARPA network
          get this if they try to attach to their TELNET  server job.
          (You also get it if  you try to attach the  job controlling
          the PTY controlling  the job controlling you,  etc.)  Typed
          on the PTY.

ILLEGAL DATA MODE FOR DEVICE <dev>

          Your program has tried to use an I/O device in an undefined
          way,  e.g.,  binary  I/O to  a  terminal.   The  UUO Manual
          discusses data modes for each device.

ILLEGAL DD CHANNEL.

          Your program is trying to use a Data Disc channel  to which
          it is not allowed access.

ILLEGAL FORMAT DUMP MODE COMMAND LIST

          Your program  is trying  to do  dump mode  I/O incorrectly.
          See the UUO Manual.

ILLEGAL INSTR. ADDRESS.

          This message  refers to instructions  in a  display program
          your job is running.

ILLEGAL OLD-STYLE ACCESS TO NEW FORMAT UDP.  UUO AT USER <ADDRESS>

          You have given an ASSIGN OLD command for a UDP, and mounted
          a pack  which has been  formatted for  file-structured use,
          and your program tried to write on the pack (gave  an ENTER
          UUO).
Appendix 11                              Monitor Error Messages   158



ILLEGAL PAGE SIZE SPEC.

          Your program is trying to adjust the page  printer geometry
          incorrectly on a display terminal.

ILLEGAL PIECE OF PAPER

          Your program gave  a PPIOT UUO  which specified a  piece of
          paper number greater than 17 (octal).  See the UUO Manual.

ILLEGAL PROTECTION CODE!

          You  gave  a  SETUWP or  CLRUWP  command  with  an argument
          greater than 1000 octal.

ILLEGAL UUO AT USER <address>

          Your  program executed  a UUO  which the  monitor  does not
          recognize.  (Probably you are trying to execute data.)

INPUT DEVICE <dev> CANNOT DO OUTPUT

          Your program has done something silly like trying  to write
          on the paper tape reader.

INPUT DEVICE <dev> HAS NO INPUT BUFFER HEADER, UUO AT USER <address>

          Your program  executed an input  UUO in buffered  mode, and
          had not provided an input buffer header when it  opened the
          device.

IN USE.

          You gave the FLUSH command and the specified terminal is in
          use.

INTERRUPT ADDRESS OUT OF BOUNDS

          Your program has  enabled user interrupts and  specified an
          interrupt address which is not in your core image.

IO TO UNASSIGNED CHANNEL AT USER <address>

          Your program executed an I/O UUO specifying an  I/O channel
          which was  not opened.  See  the UUO Manual  about channels
          and I/O.
Appendix 11                              Monitor Error Messages   159



<dev> IS BUSY, WILL YOU WAIT?

          Your program tried  to open a  device which another  job is
          using.  If you say Y (then RETURN), your job is placed in a
          queue of jobs waiting for the device, and will be continued
          automatically when it's your  turn.  If you say N,  you are
          then asked DIRECT IO TO DISK? and can again say Y or N.  If
          you say Y, you may be asked for a filename (if your program
          does input or output  on that channel without  specifying a
          name).  If  you say  N again, your  program gets  a failure
          return on the INIT or OPEN UUO.

JMS NOT LEGAL; USE JSR.

          Your  program  set  up  a  III  display  program  with  the
          forbidden JMS instruction in it.  See the UUO Manual.

JOB CAPACITY EXCEEDED

          The maximum  allowable number of  users are  already logged
          in.  Try again later.

<n>K OF CORE NEEDED

          The maximum amount of  core storage available to  user jobs
          is not  enough for the  core image you  are trying  to run.
          The  number  in  the  message  is  the  decimal  number  of
          1024-word  blocks needed  for the  program.  (Note:  if you
          give a RUN  or GET with a  core size argument which  is too
          big, the message will  tell you the minimum amount  of core
          necessary to fit  the dump file,  not the amount  you asked
          for.  The amount in the message might well fit  even though
          what you asked for didn't.)

LOGICAL NAME ALREADY IN USE, DEVICE <dev> ASSIGNED

          You  typed an  ASSIGN command  with a  logical  device name
          argument which you  were already using for  another device.
          The device you requested  is assigned to your job,  but the
          logical name still refers to the old device.

LOGIN PLEASE

          You typed a command which requires that you log in first.
Appendix 11                              Monitor Error Messages   160



LOOKUP FAILED

          The filename  you typed in  response to LOOKUP  NEEDED (see
          below) could  not be  read.  (It doesn't  exist or  is read
          protected against you.)  You get to type in another name.

LOOKUP NEEDED.  PLEASE TYPE FILE NAME.

          Your  program tried  to  read from  the disk  or  a DECtape
          without specifying a file  by executing a LOOKUP  UUO.  You
          are given the chance to specify the file to read.

NEED ENTER BEFORE OUTPUT
NEED LOOKUP BEFORE INPUT

          You get  these messages if  your program opens  a directory
          device, closes a file, and then tries to do input or output
          on that channel without another LOOKUP or ENTER.

NO CORE ASSIGNED

          You typed a command which refers to your core  image (e.g.,
          DE or START), and you don't have a core image.

NO DDT

          You  typed a  DDT  command, and  your core  image  does not
          contain DDT or RAID (JOBDDT zero).

NO REENTER ADDRESS

          You gave a REENTER command and your program has  no REENTER
          address (JOBREN is zero).

NO STARTUP ADDRESS!

          You  gave a  START command  and your  program has  no start
          address (JOBSA zero).

NO SUCH DEVICE

          You typed  something the monitor  did not recognize  when a
          device name was required.

NO SUCH JOB

          You gave an ATTACH  or kill command with a  nonexistent job
          number.
Appendix 11                              Monitor Error Messages   161


NO SUCH PRIVILEGE!

          The  privilege  name  specified  in  an  ENABLE  or DISABLE
          command does not exist.

NO UPPER SEGMENT!

          You typed a  SETUWP or CLRUWP  command and your  core image
          does not include an upper segment.

NON-EX JOB NAME OR NUMBER

          Your program  gave a  MAIL UUO  addressed to  a nonexistent
          job.

NON EX MEM AT USER <address>

          This  can't  happen,  it says  here.   It  means  that your
          program tried to address a word of core storage  which does
          not exist.  However, we have the maximum possible amount of
          core,  so  there shouldn't  be  any  nonexistent addresses.
          Possibly a hardware failure could cause this.  (If  you are
          running a spacewar  module which resets its  relocation and
          protection registers  when for some  reason we  are running
          with less than  the full amount of  core, you can  get this
          legitimately.)

NOT A DUMP FILE

          The file specified  in a RUN, R,  or GET command is  not in
          dump file format.

NOT A NEW FORMAT UDP

          You have typed an  ASSIGN PUBLIC or ASSIGN  PRIVATE command
          for a UDP, and mounted a pack which has not  been formatted
          for file-structured use.   The error is not  detected until
          your program  tries to perform  some operation on  the UDP.
          See a system programmer about formatting your pack.

NOT A TTY.

          You gave the  FLUSH command with  an argument which  is not
          the name of a terminal.

NOT ENOUGH CORE!

          You typed a CORE command with an argument greater  than the
          maximum core available to a user job.
Appendix 11                              Monitor Error Messages   162


<filename> NOT FOUND

          The file  specified in  a RUN,  R, or  GET command  was not
          found.  If the problem  is not a spelling error,  make sure
          you are not aliased.

NOT ONE OF YOUR JOBS.

          You typed a KILL command with a job number not belonging to
          your programmer name.

OUT OF BOUNDS

          Some numeric  argument to a  monitor command  wasn't right.
          This could be an address not in your core image in a  DE or
          E command.

OUTPUT DEVICE <dev> CANNOT DO INPUT

          Your program has tried to do something silly like  read the
          line printer.

OUTPUT  DEVICE  <dev>  HAS  NO  OUTPUT  BUFFER  HEADER,  UUO  AT USER
          <address>

          Your program  executed an output  UUO in buffered  mode and
          did not provide a buffer header when it opened the device.

PARITY ERROR IN YOUR CORE IMAGE. LOC = <address>
PARITY ERROR IN YOUR UPPER SEGMENT. LOC = <address>

          A  hardware failure  has  invalidated the  contents  of the
          indicated address in your core image.  The safest  thing to
          do in  this case is  to restart with  a fresh copy  of your
          program.   If you  were  running for  a long  time  and are
          willing to risk continuing, you can type CONTINUE.  You can
          also  try to  fix the  bad location  with DDT  or  RAID, if
          present, or with the DE and E commands.

PC EXCEEDS MEM BOUND AT USER <address>

          Your program tried to jump to an address outside  the range
          of your core image.  The message, unfortunately,  tells you
          the illegal  address rather  than the  address of  the jump
          instruction.
Appendix 11                              Monitor Error Messages   163



PDL OV AT USER <address>

          Your  program had  a pushdown  list overflow.   The address
          typed  is  the effective  address  of a  PUSHJ,  the return
          address for POPJ, or the address following a PUSH or POP.

PIECE OF GLASS TOO BIG

          Your program is  trying to run  a display program  which is
          too big for the monitor to handle.  Sorry.

PLEASE KJOB OR DETACH

          You gave a LOGIN command when you were already logged in.

PLEASE TYPE ↑C FIRST

          You started your program with CSTART or  CCONTINUE, leaving
          your terminal  in monitor  mode, and  then typed  a command
          which  affects your  core image.   Such commands  cannot be
          processed while the program is running.  Type CALL  and try
          again.

PROJECT-PROGRAMMER NUMBER MISMATCH

          You typed  an ATTACH  command, and the  job number  and PPN
          arguments did not agree.

RESET CALLED FROM I-LEVEL, OR SPACEWAR LEVEL

          Your  job's  user  interrupt  routine  or  spacewar  module
          executed a RESET UUO.

SAVE/GET IO ERROR

          Try again.  If it still fails, ask a wizard for help.

SORRY, NO <dev>'S AVAILABLE

          You  typed an  ASSIGN command  with a  generic  device name
          (e.g., MTA), and all of them are in use.

SORRY, PROTECTION FAILURE!

          You typed a SETUWP or CLRUWP command, and are not permitted
          to change the write  protection of your core  image's upper
          segment.
Appendix 11                              Monitor Error Messages   164



SORRY, YOU CAN'T HAVE THAT PRIVILEGE!

          You typed  an ENABLE command  specifying a  privilege name,
          and  neither  the  privilege  you  specified  nor  the  PRI
          privilege is in the  list associated with your PPN;  or the
          privilege is one which is not permitted to any user (XGP or
          SSL).

SPACEWAR LOSSAGE - <error>

          The  error indicated  can be  ILL MEM  REF, PC  EXCEEDS MEM
          BOUNDS, NON EX  MEM, PDL OV, or  CONS TRAP.  It  means that
          your job  started a spacewar  module (see the  UUO Manual),
          which caused the  error.  See the particular  error message
          in this list for an explanation.

SWAP CALLED FROM I-LEVEL

          Your job's user interrupt routine executed a SWAP UUO.

SWAP READ ERROR

          Your  job was  swapped out  of core,  and when  the monitor
          tried to read it back in, there was a hardware error on the
          swapping disk.  Your  core image is probably  gone forever.
          If you really need it badly, you might be able  to persuade
          a system programmer to try to recover it for you,  but even
          then there's not much chance.  Start over.

THIS FORM OF MTAPE IS NO LONGER SUPPORTED!

          You are trying to  run an old program which  uses old-style
          disk  MTAPE UUOs.   See  the UUO  Manual for  the  new disk
          MTAPEs.

TOO FEW ARGUMENTS

          This  error  message  can  be  typed  by  several different
          monitor commands and should be self-explanatory.

TOTAL DPY BUFFER SPACE EXCEEDED.

          Your program is  trying to run  a III display  program, and
          there is no more room in your allocation of  display buffer
          space.
Appendix 11                              Monitor Error Messages   165



UDP OFFLINE OR WRITE LOCKED

          Your program has tried to perform some operation on  a UDP,
          and there is  no pack mounted, or  the drive is  not turned
          on, or it does not  have its ID plug inserted in  the front
          panel,  or it  is switched  to read-only  and  your program
          tried to write on it.

USE "KJOB" TO LOG YOURSELF OFF.

          You typed a  KILL command with your  own job number  as the
          argument.

$$ USER DPY ERROR AT <address>

          This message  comes along with  another which  explains the
          error in your display program.  The address is that  of the
          offending instruction.

USER I-LEVEL <error>

          The error can be ILL.  MEM. REF., NON-EX. MEM., or  PDL OV.
          See the associated message in this list for an explanation.
          The error happened in your program's interrupt routine.  If
          it says CH3 ERROR instead of one of the above, see a system
          programmer.

UUO AT USER <address>

          This line  appears with certain  other messages.   It tells
          you  the location  in your  core image  of  the instruction
          which caused the error.

<dev> WASN'T ASSIGNED

          You gave a DEASSIGN or REASSIGN command and hadn't assigned
          the device.

WASN'T DET

          You gave  the privileged ATTACH  <device> command  and have
          the privilege, but the device wasn't detached.
Appendix 11                              Monitor Error Messages   166



YOU ARE LOCKED OUT OF CORE!

          The amount of user core available has been reduced by other
          jobs  starting spacewar  modules (thereby  being  locked in
          core).  There is  not enough room  to fit your  core image.
          This condition may fix itself quickly; the message does not
          return you to monitor  mode, but will keep  appearing every
          so often until  you fit again.  If  you have a  really huge
          program, run it late at night.
Appendix 12                                        Bibliography   167


                             APPENDIX 12

                            BIBLIOGRAPHY




This appendix lists various other sources of information about system
programs.  Some of these are available on the disk, some are printed.
Some programs,  which were not  written here but  came from  DEC, are
documented in DEC manuals.   Other programs, documented on  the disk,
are not  included here;  only the major  processors are  listed.  The
files   AIMS[BIB,DOC],   AIMS.OLD[BIB,DOC],    SAILON[BIB,DOC],   and
PRUNE.DAT[UP,DOC] list  other program documentation  which may  be of
interest.  A convention used in naming [S,DOC] and [UP,DOC]  files is
that the filename  is the name of  the program being  documented, and
the extension is the programmer name of the author.

SAILONs (Stanford Artificial Intelligence Laboratory Operating Notes)
and AIMs (Artificial  Intelligence Memos) are generally  available in
printed form  from the project  secretaries.  Try this  before making
your own listing.


EDITORS:

TV:    TVED.DCS[UP,DOC] is the reference manual for the TV editor.
E:     TV2E.FW[UP,DOC] describes the differences between E and TV.
       Read TVED.DCS also.
SOS:   SOS.LES[S,DOC], SAILON 50.3, is the reference manual for SOS.
TECO:  This is a DEC program.  See the DECsystem 10 Users Handbook.

LANGUAGE PROCESSORS:

FAIL:  FAIL.REG[AIM,DOC], AIM 226, is the reference manual.
SAIL:  SAIL.KVL[AIM,DOC], AIM 204.  This is a long manual; try to get
       the printed version instead of spooling a copy.
MACRO: This is a DEC program.  See the DECsystem 10
       Assembly Language Handbook.
F4:    This is the DEC FORTRAN.  See the DECsystem 10
       Mathematical Languages Handbook.
LISP:  Our version of LISP, LISP 1.6, is described in
       LISP.WD[S,DOC], SAILON 28.7.
PUB:   PUBNET.TES[S,DOC], SAILON 70, describes the
       PUB Document Compiler.

DEBUGGERS:

RAID:  The display terminal debugger is described in
       RAID.PMP[S,DOC], SAILON 58.1.
Appendix 12                                        Bibliography   168


DDT:   The Teletype debugger is a DEC program; see the DECsystem 10
       Assembly Language Handbook.
Appendix 13                              Stanford Character Set   169


                             APPENDIX 13

                       STANFORD CHARACTER SET


The Stanford ASCII character set is displayed in the following table.
The three digit octal code for a character is composed of  the number
at the left of its row plus the digit at the top of its  column.  For
example, the code for "A" is 100+1 or 101.

                         0   1   2   3   4   5   6   7

                    000  NUL ↓   α   β   ∧   ¬   ε   π
                    010  λ   TAB LF  VT  FF  CR  ∞   ∂
                    020  ⊂   ⊃   ∩   ∪   ∀   ∃   ⊗   ↔
                    030  _   →   ~   ≠   ≤   ≥   ≡   ∨
                    040  SP  !   "   #   $   %   &   '
                    050  (   )   *   +   ,   -   .   /
                    060  0   1   2   3   4   5   6   7
                    070  8   9   :   ;   <   =   >   ?
                    100  @   A   B   C   D   E   F   G
                    110  H   I   J   K   L   M   N   O
                    120  P   Q   R   S   T   U   V   W
                    130  X   Y   Z   [   \   ]   ↑   ←
                    140  `   a   b   c   d   e   f   g
                    150  h   i   j   k   l   m   n   o
                    160  p   q   r   s   t   u   v   w
                    170  x   y   z   {   |   ALT }   BS

The  tables  below display  the  standard ASCII  codes,  and  the SOS
representation used at Stanford for entering the full  Stanford ASCII
character  set from  Teletypes or  similar terminals  with restricted
character sets.  The obscure names  for the ASCII codes below  40 are
listed just for confusion.   Notes: "DEL" (177) is the  ASCII delete.
"ESC" (33) is their alt  mode.  Codes 136 and 137 have  two different
interpretations, as shown below.  The SOS representation is so called
because it is  provided by SOS,  the Teletype editor.   Certain other
programs also  know about  this representation, but  it is  not built
into the monitor in any way.
Appendix 13                              Stanford Character Set   170


                               Standard ASCII

                         0   1   2   3   4   5   6   7

                    000  NUL SOH STX ETX EOT ENQ ACK BEL
                    010  BS  TAB LF  VT  FF  CR  SO  SI
                    020  DLE DC1 DC2 DC3 DC4 NAK SYN ETB
                    030  CAN EM  SUB ESC FS  GS  RS  US
                    040  SP  !   "   #   $   %   &   '
                    050  (   )   *   +   ,   -   .   /
                    060  0   1   2   3   4   5   6   7
                    070  8   9   :   ;   <   =   >   ?
                    100  @   A   B   C   D   E   F   G
                    110  H   I   J   K   L   M   N   O
                    120  P   Q   R   S   T   U   V   W
                    130  X   Y   Z   [   \   ]   ∧↑  _←
                    140  `   a   b   c   d   e   f   g
                    150  h   i   j   k   l   m   n   o
                    160  p   q   r   s   t   u   v   w
                    170  x   y   z   {   |   }   ~   DEL

                               SOS Representation

                         0   1   2   3   4   5   6   7

                    000  --- ?!  ?"  ?#  ?$  ?%  ?&  ?'
                    010  ?(  TAB LF  VT  FF  CR  ?)  ?*
                    020  ?+  ?,  ?-  ?.  ?/  ?0  ?1  ?2
                    030  ?9  ?6  ?3  ?=  ?<  ?>  ?7  ?8
                    040  SP  !   "   #   $   %   &   '
                    050  (   )   *   +   ,   -   .   /
                    060  0   1   2   3   4   5   6   7
                    070  8   9   :   ;   <   =   >   ??
                    100  @   A   B   C   D   E   F   G
                    110  H   I   J   K   L   M   N   O
                    120  P   Q   R   S   T   U   V   W
                    130  X   Y   Z   [   \   ]   ↑   ←
                    140  ?@  ?A  ?B  ?C  ?D  ?E  ?F  ?G
                    150  ?H  ?I  ?J  ?K  ?L  ?M  ?N  ?O
                    160  ?P  ?Q  ?R  ?S  ?T  ?U  ?V  ?W
                    170  ?X  ?Y  ?Z  ?[  ?:  ALT ?]  BS
                                                          INDEX   171


abbreviations for monitor           BREAK 1 X   25, 42
   commands   7                     BREAK A   27
activation   19                     BREAK B   28
activation character   17, 22       BREAK C   26
AD device   10                      BREAK D   27
ADC device   10                     BREAK F   21, 42
add channel   27                    BREAK H   27
add piece of glass   27             BREAK key   17
addresses, core   3, 13             BREAK N   26, 27
ADVANCE command   119, 120          BREAK O   21
ALGOL   3                           BREAK P   26
alias   23, 24, 36, 39, 42, 47,     BREAK Q   22
   55, 57                           BREAK S   27
ALIAS (in WHO line)   23            BREAK T   27
ALIAS command   42                  BREAK U   28
ALT   20, 31                        BREAK W   22
ALT key   16                        BREAK X   24, 25, 42
alt mode   16, 169                  BS   18
ALT MODE, Teletype   31             BS key   16
analog-to-digital   10              CALCOMP   10
arguments   7                       CALL   21, 24, 30, 35, 42
ARPA network   10, 31, 58, 104,     CALL key   17
   109, 129                         call, deferred   21
ASCII   16, 131, 169                cameras, TV   26
ASCII switch in COPY   85           CANCEL command   109
ASK switch in COPY   85             carriage return   16, 20, 31, 42,
ASK switch in SPOOL   95               46
assembly language   3               CCONTINUE command   35
ASSIGN command   8, 36              CDETACH command   36
assistance   42                     CETV command   12, 63
Associated Press   46, 59           CFORK command   36
ATTACH command   36, 48, 60         channel number   27
AUDIO (LOGIN option)   46           channels, Data Disc   5, 23, 26,
audio switch   28, 46                  27, 39, 60
authorized users   11               channels, private   27
backspace   16                      channels, public   27, 46
BACKSPACE command   119, 120        character set   5, 16, 169
backspace, deleting   18, 19        character set, full   21
backspace, non-deleting   18        CLEAR   19
bams   122                          CLEAR key   17
BEEP   28                           clear line editor   19
bibliography   167                  CLRUWP command   34
BINARY switch in COPY   85          CMD files   63
binary, relocatable   see           CMQ (job queue)   24
   relocatable binary               code, character   16, 169
BLOCKED switch in COPY   85         command decoder   7, 17
blocks   14, 23, 32, 33, 54         command files   52
BMAR switch in XSPOOL   98          commands, monitor   7
book mode   64                      COMPILE command   13, 64, 65
BREAK   21                          COMPILE switch in RPG   67
                                                          INDEX   172


compiling programs   13             DAY.TXT (COPY filehack)   81
continuable   35                    DAYTIME command   7, 40
CONTINUE command   24, 35           DCQ (job queue)   24
CONTROL   20, 52                    DD (in WHO line)   23
CONTROL key   16, 132               DDT   33, 34, 62, 66, 72, 168
CONTROL key, Teletype   30          DDT command   34
CONTROL-B, Teletype   30            DDT, Executive   61
CONTROL-BREAK   22, 26              DE (deposit) command   34
CONTROL-BS   18                     DEASSIGN command   38
CONTROL-C, Teletype   30            DEBUG command   66
CONTROL-CALL   21                   debugging program   see DDT or
CONTROL-CLEAR   22, 26                 RAID
CONTROL-D   18                      DECtape   8, 10, 24, 53, 143
CONTROL-FORM   18                   Defense, Department of   129
CONTROL-I   19                      deferred call   21
CONTROL-I, Teletype   31            delete   16, 169
CONTROL-K   18                      delete channel   27
CONTROL-K, Teletype   31            DELETE command   50, 91
CONTROL-L, Teletype   31            delete piece of glass   27
CONTROL-META-LINE   21              DELETE switch in SPOOL   95
CONTROL-number   19                 delete to left   18
CONTROL-O, Teletype   30            delete to right   18
CONTROL-R   18                      DENSITY switch in COPY   85
CONTROL-RETURN   19, 20             deposit in core   see DE
CONTROL-S   18                      DET (in WHO display)   54
CONTROL-SPACE   18                  DET (in WHO line)   23
CONTROL-TAB   18                    DETACH command   35, 60
CONTROL-U, Teletype   30            detached jobs   23, 35, 52, 54
CONTROL-Z, Teletype   31            DEV privilege   60
CONVERT switch in COPY   85         device   36, 39, 142
COPY   49, 79                       device name   8, 60
COPY command   49                   device name, logical   8, 36
core   see storage, core            device name, physical   8, 10,
CORE command   33                      36, 37
core image   3, 7, 13, 14, 23,      device names, list of   10
   24, 32, 33, 43, 54               DIAL command   59, 131
CREATE command   62                 DIGEST (LOGIN option)   46, 47
CREF command   76                   digital-to-analog   10
CREF switch in RPG   67, 70         DIOW (job queue)   24
CSTART command   35                 directories   9
CTRL key, Teletype   30             DIRECTORY command   50, 91
CTV command   12, 62                directory device   8, 39
CTY device   10, 42                 directory, telephone   56
cursors   5, 17                     DIRED program   59
DAC device   10                     DISABLE command   60
DART   51, 89, 119                  disk   8, 9, 23, 33, 38, 40, 42,
data   8                               50, 51, 53
Data Discs   5, 17, 22, 25, 26      disk PPN   see alias
DATE (in WHO line)   23             display   see terminals, display
DAY (in WHO line)   23              DMP   32
                                                          INDEX   173


DMP files   9, 13, 67               ESC T   27
DO   74                             ESC U   28
DO command   52                     ESC W   22, 36
DOC files   65                      ESC X   25, 42
documentation, program   4, 167     ESC Y   25
DRD command   59                    ESCAPE, Teletype   31
DSK (in WHO line)   23              ETV command   12, 63
DSK device   see disk               EVEN switch in COPY   86
DSKQ (in WHO line)   23             examine core   see E
DSPOOL switch in COPY   85          EXECUTE command   13, 66
DTA device   see DECtape            extension   9, 32
DTQ (job queue)   24                extensions, standard   9
DUMP command   119, 121             EXTRA switch in COPY   86
dump file   see DMP files           EXTRA switch in SPOOL   95
DUMP switch in COPY   86            F4   62, 167
DUMP switch in RPG   67, 72         F4 files   63, 65
DUMP switch in SPOOL   95           FACT.TXT file   93
DWQ (job queue)   24                FAI files   63, 65
E   11, 17, 21, 62, 167             FAIL   3, 62, 65, 167
E (examine) command   34            FAIL switch in RPG   67
ECHO (in TTY command)   42          FAST (LOGOUT option)   48
EDDT command   60                   FAST switch in COPY   86
EDIT command   63                   FF switch in SPOOL   95
editing   11                        file directory   see directory
editor, display   11, 63            file protection   43
editor, line   see line editor      file storage   8
ENABLE command   60                 File Transfer Protocol   58, 129,
end of file   21, 31                   135
EOT command   119, 120              filenames   8
error messages   150                FILES command   40
ESC   21                            files, disk   9, 24
ESC 1 X   25, 42                    FILL (in TTY command)   42
ESC A   27                          FILL (LOGIN option)   46
ESC B   28                          FIND command   55
ESC C   26                          FINGER command   14, 48, 57
ESC D   27                          FINISH command   39
ESC E   26                          FIXIMLAC command   58, 128
ESC F   21, 42                      FLUSH command   39
ESC G   25                          FONT switch in COPY   86
ESC H   27                          FONT switch in XSPOOL   98
ESC I   22                          FOONLY switch in COPY   86
ESC J   26                          FORK command   36
ESC key   17                        form feed   16, 31, 81
ESC L   25                          FORM key   16
ESC N   26, 27                      FORTRAN   62, 65, 167
ESC O   21                          FORTRAN switch in RPG   67
ESC P   26                          FORTRAN switch in SPOOL   95
ESC Q   22                          fortune cookie   46
ESC R   26                          FORWARD switch in RPG   67
ESC S   27                          FTP command   58, 129, 135
                                                          INDEX   174


FUDGE2   73                         job number   3, 8, 11, 36, 38,
FULL (in TTY command)   42             39, 42, 54, 57
FULL (LOGIN option)   46            JOBDDT   33, 34
full character set mode   21, 46    JOBFF   33
FULL switch in COPY   86            JOBNAM (in WHO display)   54
GET command   33                    JOBNAM (in WHO line)   23
glass, pieces of   25, 27           JOBPC   35
glitch   25                         JOBRD   24
graphics   5, 25                    JOBREN   34
GRIPE command   101                 jobs   23
GTOTAL switch in COPY   87          JOBSA   15, 34, 35
guest account   37, 44              KATTACH command   48
HALT command   35                   KCS (in TIME command)   40
HEADER switch in COPY   87          keyboard scanner   17, 21
HEADING switch in SPOOL   95        keyboards   16
HELLO command   41                  KIL privilege   60
HELP command   14, 57               KILL command   42, 60
HOLD switch in SPOOL   95           KILL switch in COPY   87
holding, automatic   22, 26         kill to character   18
HOT command   59                    kilo-core-seconds   40
I/O   see device                    KJOB command   11, 47
IGNI switch in COPY   87            KLOG command   48
IGNO switch in COPY   87            languages, programming   3, 167
III (in WHO line)   23              LATER command   108
IIIs   5, 17, 25, 27                left cursor   17
IMLAC   58                          letters, lower case   7, 9, 21,
IMP device   10, 129                   30, 42
INCREMENT (in TIME command)   40    LIBRARY switch in RPG   67, 73
information, system   4, 14, 39,    LINE   see line feed
   53                               LINE (in WHO display)   54
INIT (LOGIN option)   46            line editor   5, 16, 17, 19, 22,
input buffer   7, 19, 20, 21, 42,      26
   52                               line feed   16, 20, 31
insert characters   19              LINE key   16
insert mode   19                    line number, terminal   27, 39,
Interface Message Processor   see      54
   IMP                              line numbers, SOS   11, 85, 88,
interrupt   17                         95
Introduction for New Users   1      line printer   see printer, line
Introduction to Terminals   5       LINK   130
INTW (job queue)   24               LISP   3, 53, 167
IOWQ   24, 35                       LISP command   58
IOWQ (job queue)   24               LIST command   50, 91
JBS (in WHO line)   23              LIST switch in COPY   87
JLOG   54                           LIST switch in RPG   67, 70
JOB (in WHO display)   54           LMAR switch in XSPOOL   98
JOB (in WHO line)   23              LOAD command   13, 66
Job Data Area   15, 33, 34          LOADER   33, 34, 62, 67
job name   32, 54, 57               LOADER switches   76
                                    loading programs   13
                                                          INDEX   175


local user   44, 59                 MSG files   104
LOCATE command   119, 120           MTA device   see magnetic tape
LOCK   24                           MTQ (job queue)   24
LOGGER   130                        NAP (COPY filehack)   81
logical device name   see device    NARROW switch in SPOOL   95
   name, logical                    NCP   129
LOGIN command   3, 7, 10, 43        New York Times   59
login, automatic   7                news service   see NS
LOGOUT   11, 12, 47, 63             NL (in WHO line)   23
LOGOUT command   48                 NOCOPY switch in SPOOL   95
LOGOUT.MSG file   48                NODELETE switch in SPOOL   95
LOGRUN   47                         NODUMP switch in RPG   67, 72
LOGRUN (LOGIN option)   46          NODUMP switch in SPOOL   95
lower segment   14                  NOFF switch in SPOOL   95
LPT device   see printer, line      NOFORTRAN switch in SPOOL   95
LPT0 switch in SPOOL   95           NOHEADING switch in SPOOL   95
LPT100 switch in SPOOL   95         NOLOAD switch in RPG   67
LST files   63                      NOMAIL (LOGIN option)   46, 47
MAC files   63, 65                  NONARROW switch in SPOOL   95
MACRO   62, 65, 167                 NONSTANDARD switch in RPG   67
MACRO switch in RPG   67            NONUMBER switch in SPOOL   95
magnetic tape   8, 9, 10, 24, 32,   NONUMBERS switch in COPY   87
   36, 51, 143                      normal activation mode   20
MAIL   46, 51, 101                  NOSAISEG switch in RPG   67
MAIL (COPY filehack)   81           NOSEARCH switch in RPG   73
MAIL command   43, 101              NOSPACES switch in COPY   88
MAINT.TXT (COPY filehack)   81      NOTICE.TXT (COPY filehack)   81
maintenance forecast   81           NOTICE.TXT file   43, 102, 113
maintenance mode   45               NOTITLE switch in SPOOL   95
MAKE command   62                   NOWARN switch in SPOOL   95
MAP switch in RPG   67, 72          NOXGP switch in XSPOOL   98
ME (LOGIN option)   46              NS   47, 113
ME (LOGOUT option)   48             NS command   59
memory stops   148                  NSA files   63, 65
MESSAG (LOGIN option)   46          NSAIL   62, 65
messages, system   11, 43           NSAIL switch in RPG   67
META   18, 19, 20, 52               NTNODE switch in XSPOOL   98
META key   16                       null job   40, 54
META-BS   18                        null-time   23
META-CALL   21                      NULQ (job queue)   24
MICRO-PLANNER   3                   NUMBER switch in SPOOL   95
MLENGTH switch in COPY   87         number, line   see line number
MODE switch in SPOOL   95           NVNODE switch in XSPOOL   98
monitor mode   7, 11, 17, 21, 33,   OCTAL switch in SPOOL   95
   35, 42                           ODD switch in COPY   88
move left   18                      old mode (UDP)   37
move right   18                     operator   42
move to beginning   18              OPTIMIZE switch in COPY   88
move to end   18                    OPTION.TXT (COPY filehack)   81
MSG (COPY filehack)   81
                                                          INDEX   176


OPTION.TXT file   43, 45, 47,       project name   4
   105, 117                         project-programmer name   see PPN
OSA files   63, 65                  protection   see file protection
OSAIL   62, 65                      PROTECTION switch in COPY   88
OSAIL switch in RPG   68            pseudo-teletype   see PTY
OUTGO.MSG file   103                PTP device   10
output buffer   21, 22              PTR device   10
page printer   25, 26, 27, 55       PTTY command   39
paging, telephone   28              PTY   10, 48, 54
paper tape   10                     PTYJOB   131
paper, pieces of   25               PUB   58, 62, 167
PARRY command   59                  PUB command   65
password   43, 53                   PUB files   63
PDP-10   1, 3, 16, 24, 54           public device   37
PDP-10 console   10, 42, 60         QQSVCM.RPG file   65
PDP-6   24, 54                      QQSVED.RPG file   65
PGX pseudo-device (COPY)   84       QSPOOL   100
phantom   54                        QSPOOL command   50
physical device name   see device   queue   57
   name, physical                   QUEUE (in WHO display)   54
pieces of glass   25                QUEUE (in WHO line)   23
pieces of paper   25                queue names   24
PJOB command   39                   QUIET switch in COPY   88
PL (in WHO display)   54            R (in WHO line)   23
PLAN (COPY filehack)   81           R command   32, 43
PLAN command   101                  RAID   33, 34, 62, 66, 72, 167
plan file   57, 81, 101, 113        Rapid Program Generator   see RPG
plotter   10                        RCOR (in WHO line)   23
PMAR switch in XSPOOL   98          RCV   113
PORNO (LOGIN option)   46           RCV command   46
PPN   4, 9, 10, 24, 36, 39, 42,     READ command   64
   43, 46, 47, 57, 60               REASSIGN command   38
PPN (in WHO display)   54           RECOPY switch in SPOOL   95
PPN (in WHO line)   23              records   9
PPN, disk   see alias               REENTER command   34
PPPN command   39                   REFERENCE switch in COPY   88
PREFIX, Teletype   31               refresh   26
PREPARE command   66                REL files   9, 65
PRI privilege   60                  REL switch in RPG   68
PRINT command   50, 91              reloading   149
printer, line   8, 10, 36, 50,      relocatable binary   9, 13
   91, 93, 142                      REMIND command   106
private device   37                 remote terminal   31
privileged commands   60            RENAME command   49, 91
programmer name   3, 22, 42, 46,    RENAME switch in COPY   88
   51, 55, 57                       repeat skip command   18
programs, display   25, 27          REPEAT switch in SPOOL   95
programs, system   4, 32, 43        request for connection   130
programs, system information   7,   request for new message   130
   14                               RESET   26, 27, 33
                                                          INDEX   177


RESOURCES command   40              shuffling   40
RESTORE command   119, 121          SIZE (in WHO display)   54
retrieve last line   19             SIZE (in WHO line)   23
RETURN   see carriage return, 20    skip to character   18
RETURN key   16, 17                 SL (in WHO display)   54
REWIND command   119                SLEEP   24
RFC   130                           SLEVEL command   41
RFNM   130                          SOCKET   130
right cursor   17                   SOS   11, 62, 63, 167
RMAR switch in XSPOOL   98          SOS representation   30
RP (in WHO line)   23               Spacewar   4
RPG   12, 47, 48, 53, 62            spacewar module   24, 54
RPG (COPY filehack)   81            special activation mode   20
RPGSAV (LOGOUT option)   48         speech synthesizer   10
RSL command   58, 122               SPOOL command   50, 93
RTIME   25                          SPOOL switch in COPY   89
RUBOUT, Teletype   30               spoolers   50, 84
RUN command   32                    SSAVE command   34
run time   40, 54, 57               Stanford ASCII   16
running programs   13, 32           START command   34
RUNQ (job queue)   24               starting programs   34
RUNTIME (in WHO line)   23          status, system   22
runtime, incremental   23           STOP (job queue)   24
SAI files   9, 63, 65               stop typeout   21, 30
SAIL   3, 62, 65, 167               storage, core   3, 14, 23, 148
SAIL switch in RPG   68             suspend typeout   22, 30
SAVE command   33                   SW10 (in WHO display)   54
SAVE switch in COPY   88            SW6 (in WHO display)   54
SAVED.MSG file   116                switch, audio   see audio switch
scanner, keyboard   see keyboard    switch, video   see video switch
   scanner                          SYS device   10, 33, 38
scrolling   25                      SYSTAT command   58
SEARCH switch in COPY   89          system WHO line   see WHO line
SEG (in WHO display)   54           T   58, 129, 131
SEG (in WHO line)   23              TAB   19, 31
segment, lower   see lower          TAB key   16
   segment                          TABS (in TTY command)   42
segment, upper   see upper          TABS (LOGIN option)   46
   segment                          tabs, hardware   42
segments   14                       TALK command   42, 60
select audio channel   28           talk ring   42
select channel   27                 tape, magnetic   see magnetic
select piece of glass   27             tape
SEND command   101                  tape, paper   8
service level   41, 54, 55, 58      TCOR (in WHO line)   23
SETPR2   153                        TECO   12, 62, 63, 167
SETUWP command   34                 TECO command   63
SHIFT key, Teletype   30            Teletypes   5, 11, 30, 46, 53,
SHIFT keys   5, 16                     58, 84
SHIFT LOCK key   5, 16, 21          TELNET   129, 131
                                                          INDEX   178


TELNET command   58, 129, 131       UUOs   2, 4, 20
terminal   7, 10, 41                vector   5
terminals, display   5, 16, 25,     vector nodes   98
   42, 53                           vertical position   25
text nodes   98                     vertical tab   16
tick   24, 54                       video switch   26
TIME (in TTY command)   42          VOD device   10
TIME (in WHO display)   54          voder   10
TIME (in WHO line)   23             VT   31
TIME command   39                   VT key   16
timesharing   1                     WAIT (in TIME command)   40
TITLE switch in COPY   90           wait time   23
TITLE switch in SPOOL   95          WARN switch in SPOOL   95
TLIST command   119, 120            whams   122
TLK privilege   60                  WHERE command   14, 57
TMAR switch in XSPOOL   98          WHO (in TTY command)   42
TMPCOR   47, 63                     WHO (LOGIN option)   46
TN command   58, 129, 131           WHO command   7, 14, 53
TOP key   5, 16                     WHO line   5, 22, 36, 39, 42, 46,
TPL pseudo-device (COPY)   84          54
TQ (job queue)   24                 wizards   40, 58
TRANSFER command   49, 91           WRU files   63
TRY command   66                    XEROX command   58
TTY (in WHO line)   23              Xerox Graphics Printer   see XGP
TTY command   41                    XFACT.TXT file   93
TTY device   see terminal;          XGP   10, 50, 93, 98, 144
   Teletypes                        XGP switch in XSPOOL   98
TTYUUO   31                         XGPLIST command   50, 91
TV   11, 62, 167                    XLINE switch in XSPOOL   98
TV command   12, 63                 XP (in WHO line)   23
TV device   10                      XSPOOL command   50, 93, 98
TV, lounge   27, 28                 XTIME   24, 25, 42
TYPE command   50, 91               XTIME (in TIME command)   40
typeahead   7                       XTIME (in WHO line)   23
UCOR (in WHO line)   23             ZERO command   53
UDP   10, 37, 39, 40, 41, 53, 59,
   83, 147
UDPUFD command   59
UFD   9
UNHIDE (LOGIN option)   46
UNSPOOL   100
UNSPOOL command   50
UPDATE (in TTY command)   42
upper segment   14, 23, 24, 33,
   54
user disk pack   see UDP
User File Directory   9
user mode   7, 35, 60
user, authorized   11
UTPCLR   53